2010-11-29 75 views
2

我有一个问题,我开发了一个客户端和服务器封装器供我个人使用,但不幸的是由于网络编程知识不足,我在客户端连接期间遇到了TIME_WAIT问题。我的客户端试图在短时间内在同一主机上建立多个连接,我发现主要原因是因为我试图重复使用套接字并进入TIME_WAIT状态,因为我正在关闭连接没有正常关机。我想知道使用.NET套接字关闭连接的正确模式,以防万一我使用'Async'APIs,例如ConnectAsync,AcceptAsync,SendAsync,ReceiveAsync,DisconnectAsync(DisconnectAsync - reuse套接字)的功能使用.NET'异步'防止TIME_WAIT API

+0

如果您使用tcp套接字,它在窗口中有一些默认值,请参阅http://support.microsoft.com/kb/158474以获取详细信息,以及如果你的客户端不是瘦客户端,我建议你使用WCF而不是tcp。 – 2010-11-29 17:46:29

回答

2

您可以在套接字上使用SO_REUSEADDR来解决这个问题。有关详细信息,请参阅Socket.SetSocketOption,这是您需要设置的ReuseAddress选项。

顺便说一下,你不是真正的意思重用套接字吗?一旦出现错误,你必须关闭它并打开一个新的。

+0

使用SO_REUSEADDR不是一个选项http://www.unixguide.net/network/socketfaq/4.5.shtml – Lu4 2010-11-30 08:08:32

+0

http://msdn.microsoft.com/en-us/library/ms740621(VS.85).aspx – Lu4 2010-11-30 08:09:05