Ich schrieb einen TCP-Server. Ich arbeite gut mit localhost. Bei der Remote-Bereitstellung gehen einige Bytes auf dem Weg zum Ziel verloren.Teile des TCP-Paketverlustes
Ich benutzte netcat auf localhost und remote und machte ein diff der beiden Ausgänge und die verlorenen Bytes sind deterministisch.
Also bezweifle ich, dass es Paketverlust ist, da es sehr unwahrscheinlich ist, dass das gleiche Paket verloren gehen würde.
Ich habe versucht, die Größe meiner Schreibvorgänge auf dem Socket auf 1000 Bytes zu reduzieren, aber ich bekomme dieses Problem immer noch.
Gibt es gemeinsame Gründe für diese Art von Fehlern?
Ich könnte den Code aber es ist nur ein socket.send von der Boost Asio-Bibliothek. Ich bin nicht sicher, dass der Fehler vom Code kommt, sonst würde es auf localhost nicht funktionieren.
Vielen Dank im Voraus für Ihre Hilfe
Tcp ist verlustfrei. Es ist in der Spezifikation https://tools.ietf.org/html/rfc793. Sind Sie sicher, dass Sie tcp verwenden oder das Problem an anderer Stelle ist –
Der häufigste Grund dafür ist, die Rückkehr von 'send()' nicht zu überprüfen. Wenn Sie 'send (sck, data, 1000, 0)' aufrufen, wird '990' zurückgegeben und Sie können den Rückgabewert nicht überprüfen und die verbleibenden 10 Bytes erneut senden, dann werden Sie sie verlieren. Dasselbe gilt für 'recv()'. – rodrigo
@Hd Heilung Ich weiß, dass es weniger Verlust ist. Deshalb frage ich hier –