2010-11-29 13 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