[c] recvfrom liefert leeren String

Andre_Java

Mitglied
Ich empfange Datenpakete mit der Funktion recvfrom und speichere die Nutzdaten in "buffer". Wenn ich mit einem c-Programm selber ASCII-Zeichen sende funktioniert auch alles und der Inhalt kann mit printf aus "buffer" ausgegeben werden. Sobald ich andere Datenpakete empfange, die auch ASCII Steuerzeichen enthalten, bleibt die Ausgabe allerdings immer leer, obwohl in "numbytes" die richtige Länge steht.

Wie kann ich verhindern, dass aus "buffer" nichts ausgelesen werden kann, sobald störende ASCII-Zeichen in den Nutzdaten sind? Am Sender kann ich leider nichts verändern.

Code:
char buffer[MAXBUFLEN];

numbytes = recvfrom(sockfd, buffer, MAXBUFLEN-1 , 0, (struct sockaddr *)&their_addr, &addr_len))

printf("Laenge Nutzdaten: %d bytes lang\n", numbytes);

buffer[numbytes] = '\0';
printf("Inhalt: \"%s\"\n", buffer);

Im Fehlerfall sieht die Ausgabe lediglich so aus:

> Laenge Nutzdaten: 228 bytes lang
> Inhalt: ""
 
Zuletzt bearbeitet:
Ich denke eher nicht, dass das Empfangen das Problem ist, du bekommst ja eine nette Byteanzahl heraus-Aber vllt. Ist am Anfang eine \0 ?
Probier mal in einer Schleife alle Byte einzeln ausgeben, ohne printf
 
Zurück