Probleme mit eigener recv-Funktion

Wie gibst du die empfangenen Daten denn aus?
Wenn du das mit cout und Konsorten machst, solltest Du darauf achten, daß die nur bis zur ersten 0 ausgeben (nullterminierter String). Wenn du eine Binärdatei empfängst, dann kann da schnell mal die eine oder andere 0 drin sein.
 
Also eigentlich bestimme ich nur die Länge des empfangenen Strings mit strlen(). Aber wenn ich z.B. eine Exe empfange und diese auf der Platte speichere, dann hat sie zwar die richtige Größe, gibt nur leider beim Ausführen eine Fehlermeldung aus. Mit Txt's in denen nur etwas Text drin steht hingegen funktionierts.
Kann es sein das Funktionen wie strcpy() oder strcat() auch nur bis zur ersten 0 funktionieren?

Gruß
cesupa
 
Auch memcpy, nur daß Du als Ziel die adresse des ersten freien Bytes in Deinem Zielarray angibst.
strcat sucht nach der ersten 0 in einem string und kopiert dort den Quellstring hin. Da in Deinem Fall die erste 0 nicht zwangsläufig das Ende der schon kopierten Daten angibt, mußt Du Dir selber merken, wieviel schon ins Zielarray kopiert wurde und das als Ziel für die nächste Kopieraktion wählen. Wie bei strcat und strcpy mußt Du natürlich darauf achten, nicht über das Ende des Arrays hinauszuschreiben.
 
Zurück