2017-01-19 2 views
0

durch TCP-Socket-Programmierung: auf meiner Anwendung verwendet die Empfängerseite einen kleinen Puffer und dann übertragene Daten. So wird recv() mehrmals aufgerufen, bis alle Daten empfangen sind. Bei jedem Aufruf von recv() wird verwendeter Puffer in einen anderen großen Puffer kopiert oder teilweise an eine Datei angehängt.Handhabung der TCP-Paket-Bestellung auf der Empfängerseite auf Anwendungsebene

Meine Frage hier ist, sollte ich die empfangene TCP "Paketreihenfolge" in meinem Code zusätzlich behandeln, oder TCP behandelt es auf einem eigenen Puffer im Hintergrund? Weil gesendete TCP-Pakete nicht in der richtigen Reihenfolge auf der Empfängerseite ankommen.

+3

TCP stellt sicher, dass die Daten in derselben Reihenfolge ankommen, in der sie gesendet wurden. Wenn Sie etwas anderes beobachten, gibt es irgendwo einen Fehler in Ihrem Code. – nos

+0

Ein häufiges Missverständnis für diejenigen, die neu in TCP sind, ist, dass sie * messaging * erwarten (d. H. Jeder Anruf zum Senden an einem Ende wird mit einem Anruf von Empfangen am anderen Ende verglichen). Wenn du dachtest, dass du es bekommst, interpretierst du vielleicht nur das, was du als "Pakete, die nicht in Ordnung sind", wie es andere erwähnten, nicht passiert. –

Antwort

1

Meine Frage hier ist, sollte ich das empfangene TCP „-Paket, um“ in meinem Code behandeln zusätzlich

Nr TCP garantiert, dass es wird Übergabe der Daten an die Anwendung in der Bestellung ist erhalten. Die Anwendung muss die Logik nicht implementieren, um die Reihenfolge des Datenempfangs zu gewährleisten. Überprüfen Sie den Anwendungscode erneut auf Fehler, die dazu führen, dass die empfangenen Daten nicht in derselben Reihenfolge vorliegen, in der sie gesendet wurden.

Verwandte Themen