Frage zu send und recv
-
Hi,
Wenn ich in einem Client folgendes mache:
send(s,i,sizeof(i),0);
send(s,s,strlen(s),0);und bei dem Server die Daten ganz normal mit recv in einer Schleife lese, kann ich davon ausgehen, dass ich IMMER 2 recv Aufrufe benötige, um die Daten zu lesen? also das diese getrennt verarbeitet werden können oder kann es auch passieren, dass recv beim ersten Aufruf schon beide Daten, also in dem Fall i und s zusammen gelesen hat?
Ich habe es hier lokal schon kurz getestet und recv empfängt die Daten immer einzeln, braucht also 2 Aufrufe...
Kann man sich darauf immer verlassen?
Danke schonmal
-
Ich bin jetzt natürlich davon ausgegangen, dass die einzelnen Daten nicht zu groß sind, also angenommen i ist ein 4 byte integer und s ein string "hallo"
-
Achtung Halbwissen:
Beim TCP (stream) musst du so oft send() aufrufen, bis alles gesendet wurde, was du willst.
Selbiges mit recv().Beim UDP (message) hingegen wird pro send() ein komplettes datagram (message) rausgeschickt, welches mit einem recv() komplett empfangen wird.