我正在開發一個內部TCP服務器和TCP客戶端。當數據包丟失爲0%時,服務器和客戶端工作正常。但是,當我有20%或更多的數據包丟失時,我看到重複的TCP消息。我收到這樣的事情....Python TCP重複消息
Client <-- MessageA -- Server
Client -- MessageB --> Server
Client <-- MessageCMessageA -- Server
難道MessageA沒有完全做它的客戶端,這時候出局,然後重新發送TCP,然後原來的消息使得其接收在晚些時候由客戶?
我的問題是,如果TCP是這樣工作的,並且如果這是包含20%或更多數據包丟失的網絡的可能情況。
準系統如何客戶端和服務器發送/接收數據的...
socket.recv(1024)
socket.send(1024)
假設您正在使用內置的TCP/IP庫並假設所有的塊最終在連接超時之前到達,TCP將保證您不必擔心重複和重新傳輸。這是您選擇TCP over UDP的主要原因之一......並且保證數據的順序正確。 –
好的,謝謝。我只是想在我開始尋找bug之前確定它。 – Taztingo
也許你認爲你的'recv'調用將總是返回正好1024字節?緩衝區大小是將要接收的最大字節數,而不是實際的數字。向我們顯示您的完整代碼以接收消息。 –