Ich weiß, dass TCP stream-ähnliche Datenübertragung bietet, aber die Hauptfrage ist - welche Situationen können beim Senden von Daten über TCP auftreten?
1. Die Nachricht kann in N-Blöcke aufgeteilt werden, um in die MTU-Größe zu passen.
2. Zwei Nachrichten können in 1 Recv-Anruf gelesen werden.TCP Fragmentierung
Kann es die nächste Situation geben?
MTU zum Beispiel 1500 Bytes.
Client Aufrufe senden mit 1498 Bytes Daten.
Client Anrufe senden mit 100 Bytes Daten.
Der Server ruft recv auf und empfängt 1500 Byte Daten.
Server ruft recv auf und empfängt 98 Byte Daten.
So endet es mit der Situation, wenn 2 Bytes vom zweiten Client gesendet werden in ersten Server Recv empfangen werden.
My-Protokoll als foolows definiert:
4 Bytes - Datenlänge
Dateninhalt.
Ich frage mich kann ich Situation, wenn 4 Bytes (Datenlänge) in 2 Stücke aufgeteilt werden?
Auch wenn es sie gespalten ist, macht es keinen Unterschied machen. Danach werden Ihre Daten korrekt an Ihr Ziel weitergeleitet, garantiert durch TCP. http://en.wikipedia.org/wiki/Transmission_Control_Protocol – DumbCoder
Es gibt keine "Nachricht", was TCP betrifft. Wenn Sie ein Konzept einer Nachricht in Ihrem Code haben, weiß TCP nichts darüber. –