如何通過套接字傳輸消息時確保消息順序的正確性?是否有任何特定的設計要遵循?請建議一些方法...確保套接字失敗時消息順序的正確性?
-1
A
回答
0
TCP按發送的順序傳遞數據。 UDP不。如果你有一個導致TCP失敗的錯誤,這是非常罕見的,你必須重新開始。 UDP不保證傳送,因此您需要在其上添加協議來請求重新傳輸並應用排序。使用TCP或做自己的序列檢查。
1
如果它是一個TCP套接字,則支持丟棄的數據包等自動構建到TCP堆棧中。您不需要做任何事情,除非注意丟棄的數據包可能導致數據包重新發送時出現短暫的閃爍。這種情況一直髮生:沒有人注意到(除了寫開關等的人)。
如果您嘗試處理完全中斷的連接:這取決於您的協議。如果你正在做每個消息的請求/響應,那麼很簡單 - 但你需要付出很多的延遲開銷。有些協議在請求/響應方面完全獨立工作(每次發送請求時,您都不會停止響應 - 您只是不斷髮送請求,並且響應將在未來的某個時刻返回)。在那個設置中,你將不得不圍繞它設計:或許到最後的已知的響應,但這仍然意味着有些事情可能在沒有你回聽的情況下被處理。所以:你可能想讓所有行爲都安全地重複,所以如果你發送了它,但是不知道它是否完成,你可以再次發佈它。
如果你使用的是UDP,那麼答案「完全是你;這是你的問題;你需要弄清楚」,這通常意味着在每個數據包中嵌入一個序列號。當然,如果你使用的是UDP,你可能會設計成只允許允許丟棄的數據包,並在未來很快重新同步。
相關問題
- 1. 如何確保MIDI消息以正確的順序到達?
- 2. 錯誤消息的順序不正確
- 3. 套接字連接 - 消息順序?
- 4. 文字不消失正確
- 5. 確保HTTP消息的完整性
- 6. Spring AMQP確保多線程環境下的消息順序
- 7. 如何確保CQRS模式下的消息順序
- 8. 正確的順序
- 9. 正確的順序
- 10. 保證多個發送線程的WCF TCP消息的順序是否正確?
- 11. 與小計保持正確的順序
- 12. 如何以正確的順序報告錯誤消息
- 13. 如何使發送消息到通道的確定順序是正確的
- 14. 即使消息正確,TestNG測試也會失敗,並顯示錯誤消息
- 15. Java線程套接字I/O連接的正確關閉順序是什麼?
- 16. 確實GetPropertyNames()保留屬性順序
- 17. Uable正確連接到telnet套接字
- 18. 確保Collection._ensureIndex通過正確的順序領域
- 19. 確保Javascript函數和回調按正確的順序執行
- 20. 如何確保方法按正確的順序執行?
- 21. 如何確保圖像以正確的順序循環加載
- 22. 如何確保OverlayLayout中的正確繪圖順序?
- 23. 確保彈簧集成事件的順序正確
- 24. 確保在AngularJS後續HTTP Ajax調用的正確順序
- 25. 套接字連接失敗
- 26. 套接字連接失敗
- 27. 正確編譯後程序失敗
- 28. 確保收到消息
- 29. 套接字:大消息性能
- 30. Android的套接字失敗
你的問題不清楚。你在考慮什麼命令? –
你使用什麼樣的套接字和連接/協議?基於IP的TCP是面向連接的,應確保您的訂單正確。但這取決於你在做什麼以及你如何使用它。 –
使用TCP(與您自己的消息邊界)或SCTP? – harold