我有一个问题,我开发了一个客户端和服务器封装器供我个人使用,但不幸的是由于网络编程知识不足,我在客户端连接期间遇到了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. React-native防止函数异步执行?
- 6. 如何使用jQuery防止在ajax中的异步
- 7. Anko异步API调用异步
- 8. 通过异步同步避免死锁并防止UI响应
- 9. 异步调用和异步io调用之间的差异.net
- 10. 使用异步&等待.net 4.5 mvc c#
- 11. 异步API
- 12. 异步API
- 13. 防止多个API调用
- 14. 如何防止异步方法被调用两次?
- 15. 防止多个异步调用,而不阻塞
- 16. 如何防止异步任务方法同时调用
- 17. 异步insertAll使用python-api-client请求
- 18. 使用Spring + Jersey的异步API
- 19. Runspace issus使用Powershell中的异步API
- 20. 在Laravel 5.4中使用Dingo API异步
- 21. 防止用.NET中的PATCH覆盖某些字段Azure Web API
- 22. 递归异步API调用
- 23. 异步API调用失败
- 24. 在WPF C#5.0和.NET 4.5中阻止异步调用
- 25. 停止异步HttpWebRequest
- 26. 在.net应用程序中使用异步时出现异常
- 27. 消防与异步忘记
- 28. 防止进一步执行
- 29. 如何防止同步
- 30. 在异步方法中使用await来防止下一行代码运行
如果您使用tcp套接字,它在窗口中有一些默认值,请参阅http://support.microsoft.com/kb/158474以获取详细信息,以及如果你的客户端不是瘦客户端,我建议你使用WCF而不是tcp。 – 2010-11-29 17:46:29