recv(...) wann wird ausgelesen?

Akilein

Mitglied
Hi Leute!

Falls z.B. der Client ein Paket mit 1024 Byte an den Server schickt und der Server dort versucht mit recv(sock, buffer, 1024, 0); einzulesen was geschickt wurde, aber noch nicht alle Daten da sind, was passiert dann? Oder wartet die Funktion recv bis alle 1024 byte ankommen?

Danke!
 
Die werden im wirklich Leben äusserst selten in einem Stück ankommen.

Benutze den Rückgabewert von recv (=Anzahl der empfangenen Bytes) und setze damit deinen Daten wieder zusammen.

recv liest so viele Bytes ein, wie gerade da sind. Die 1024 gibt nur an, wie viele Bytes maximal eingelesen werden können. Solltest du also wirklich auch als Rückgabewert 1024 erhalten, dann kannst du eigentlich direkt noch einmal recv aufrufen (dann ist vermutlich mehr angekommen).
 
Solltest du also wirklich auch als Rückgabewert 1024 erhalten, dann kannst du eigentlich direkt noch einmal recv aufrufen (dann ist vermutlich mehr angekommen).
Vielleicht besser mit "select" prüfen, ob tatsächlich noch weitere Daten vorhanden sind. Falls nämlich nix mehr kommt, blockiert recv an der Stelle.

Gruß
MCoder
 
Zurück