c ++ posix sockets recv Funktionalität

Ich habe eine vielleicht noobische Frage, ich habe mich umgesehen, aber keine direkte Antwort darauf gefunden und dachte, ich könnte hier eine schnelle Antwort bekommen. Wenn ein Client in einer einfachen TCP / IP-Client-Server-Auswahlschleife unter Verwendung von BSD-Sockets zwei Nachrichten sendet, die gleichzeitig an einem Server ankommen, würde ein Aufruf von recv am Server beide Nachrichten zurückgeben, die zusammen im Puffer gebündelt sind, oder recv erzwingt jede Nachricht unterschiedliche ankommende Nachricht, die separat gelesen werden soll?

Ich frage, weil ich in einer Umgebung arbeite, in der ich nicht sagen kann, wie der Client seine zu sendenden Nachrichten erstellt. Normalerweise meldet recv, dass 12 Bytes gelesen werden, dann 915, dann 12 Bytes, dann 915 und so weiter in einem solchen abwechselnden 12- bis 915-Muster ... aber manchmal meldet es 927 (was 915 + 12 ist). Ich dachte, dass entweder der Client einige seiner Informationen bündelt, bevor er sie an den Server sendet, oder dass die Nachrichten eintreffen, bevor recv aufgerufen wird, und dann alle ausstehenden Bytes gleichzeitig von recv abgerufen werden. Ich wollte also sicherstellen, dass ich das Verhalten von recv richtig verstehe. Ich denke, vielleicht fehlt mir hier etwas in meinem Verständnis, und ich hoffe, dass jemand darauf hinweisen kann, danke!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage