我有一個問題,我開發了一個客戶端和服務器封裝器供我個人使用,但不幸的是由於網絡編程知識不足,我在客戶端連接期間遇到了TIME_WAIT問題。我的客戶端試圖在短時間內在同一主機上建立多個連接,我發現主要原因是因爲我試圖重複使用套接字並進入TIME_WAIT狀態,因爲我正在關閉連接沒有正常關機。我想知道使用.NET套接字關閉連接的正確模式,以防萬一我使用'Async'APIs,例如ConnectAsync,AcceptAsync,SendAsync,ReceiveAsync,DisconnectAsync(DisconnectAsync - reuse套接字)的功能使用.NET'異步'防止TIME_WAIT API
2
A
回答
2
您可以在套接字上使用SO_REUSEADDR來解決這個問題。有關詳細信息,請參閱Socket.SetSocketOption,這是您需要設置的ReuseAddress
選項。
順便說一下,你不是真正的意思重用套接字嗎?一旦出現錯誤,你必須關閉它並打開一個新的。
6
我發現不可能阻止TIME_WAIT。無論是服務器還是客戶端都會遇到問題,只取決於誰先發起連接關閉。如果是關閉連接的客戶端,服務器上將不會有TIME_WAIT。如果是首先關閉的服務器,則客戶端上不會有TIME_WAIT。所以剩下要做的唯一選擇就是使用SO_REUSEADDR,但在這種情況下,it is still impossible to use the reused address for contacting previously disconnected host
相關問題
- 1. 異步DataCache API(.NET)
- 2. 異步使用WinSCP .NET
- 3. 防止死鎖不使用的await調用異步方法時
- 4. 節點JS異步 - 防止主回調
- 5. Unirest異步請求,防止JVM退出
- 6. React-native防止函數異步執行?
- 7. 防止從gridview與javascript異步回發
- 8. 如何使用jQuery防止在ajax中的異步
- 9. 異步.NET異常
- 10. 同步異步API調用
- 11. Anko異步API調用異步
- 12. 通過異步同步避免死鎖並防止UI響應
- 13. 使用異步.net 4.0返回DataTable
- 14. 使用異步&等待.net 4.5 mvc c#
- 15. 異步調用和異步io調用之間的差異.net
- 16. 防止空異常使用LINQ協會
- 17. 防止多個API調用
- 18. 異步API
- 19. 異步API
- 20. 防止多個異步調用,而不阻塞
- 21. 如何防止異步方法被調用兩次?
- 22. 如何防止異步任務方法同時調用
- 23. 防止用.NET中的PATCH覆蓋某些字段Azure Web API
- 24. 異步insertAll使用python-api-client請求
- 25. 使用Task.Run製作異步API
- 26. 使用TPL與現有的異步API
- 27. URLDownloadToFile API,它如何異步使用?
- 28. 使用RxJava構建異步REST API
- 29. Runspace issus使用Powershell中的異步API
- 30. 使用Spring + Jersey的異步API
如果您使用tcp套接字,它在窗口中有一些默認值,請參閱http://support.microsoft.com/kb/158474以獲取詳細信息,以及如果你的客戶端不是瘦客戶端,我建議你使用WCF而不是tcp。 – 2010-11-29 17:46:29