我的程序類似於HTTP代理,它等待接口上的消息並將它們轉發到另一個接口。該應用程序僅使用IOCP,客戶端和服務器端。有時,客戶端比服務器慢(比例爲10或100),而服務器無法緩衝太多的數據。 如何暫停建立的TCP連接,然後恢復它而不丟失任何消息?我試圖推遲一個新的recv IOCP事件,但有些消息丟失。 C++ /的Windows 7+如何暫停IOCP TCP套接字服務器?
2
A
回答
1
我試圖延緩新的recv IOCP事件
這其實應該做的伎倆一職。然後,服務器端TCP連接的接收緩衝區將填充到您的套接字上設置的接收緩衝區大小,此時套接字將推回到該套接字的發送端,通過標準方式TCP flow control - 可以簡單地停止發送更多直到接收器信號已經處理了更多的消息。
現在它取決於發送端在斷開連接之前要等待多久(超時)。
「一些消息丟失」
,可以用TCP,如果你斷開連接,只發生這發送方和接收方將採取的通知。所以數據不會簡單地丟失。它依賴於TCP上的網絡協議,通過發送者應用程序是否可以知道接收應用程序(在這種情況下爲您的代理)成功處理了多少消息。
+0
謝謝,帖子被延遲時TCP棧的行爲對我而言並不清楚。 – Olivier
相關問題
- 1. Python:異步TCP套接字服務器
- 2. C/Linux TCP套接字服務器
- 3. 與TCP套接字(服務器)通信
- 4. TCP套接字(服務器)設計
- 5. TCP Python套接字服務器響應
- 6. TCP套接字凍結服務器
- 7. tcp套接字服務器不發送
- 8. 轉換java基於線程的tcp套接字服務器到javascript async tcp套接字服務器
- 9. 如何用C++/QT中的TCP服務器套接字創建Http服務器
- 10. 如何實現客戶端 - 服務器架構的服務器TCP套接字
- 11. 如何使我的TCP套接字服務器異步?
- 12. 如何讓我的iPad成爲TCP套接字服務器?
- 13. 停止UDP套接字服務器
- 14. 套接字被暫停()
- 15. TCP服務器:移交套接字連接
- 16. 用於TCP套接字的Android服務
- 17. C#套接字TCP客戶端/服務
- 18. 如何做Java tcp客戶端<-> Qt tcp服務器套接字通信
- 19. Matlab的TCP/IP服務器套接字多個連接
- 20. TCP服務器不接受第二個套接字發送
- 21. 如何暫停服務
- 22. 如何暫停kubernetes服務
- 23. whois的TCP套接字連接失敗的一個服務器
- 24. 像Tcl「套接字服務器」套接字服務器框架
- 25. 無法連接到服務器,TCP套接字android
- 26. 亞馬遜EC2服務器TCP套接字連接
- 27. 用Java連接到IOCP服務器(Android)
- 28. 通過TCP與c + +(套接字服務器)conect android(套接字客戶端)
- 29. 無法連接到其他PC的TCP套接字服務器
- 30. PHP套接字連接到TCP服務器
協商較小的滑動窗口大小,等於您願意在單個連接上緩衝的數據量。 –