當.NET 4.0中的HttpWebRequest爲每個請求創建一個套接字連接,但之後無法關閉套接字時,我很難搞清楚。 當我執行例如50個HttpWebRequests時,我在netstat中看到了處於WAIT狀態的50個TCP套接字連接。HttpWebRequest在TIME WAIT中保持套接字
我已有的代碼減少到最低限度:
Dim webReq As HttpWebRequest
Dim webRes As HttpWebResponse
Dim webStream As IO.StreamReader
Dim _answer As String
webReq = System.Net.HttpWebRequest.Create(TextBox1.Text)
webReq.Timeout = 10000
webReq.Method = WebRequestMethods.Http.Get
webRes = webReq.GetResponse
webStream = New IO.StreamReader(webRes.GetResponseStream(), System.Text.Encoding.ASCII())
_answer = webStream.ReadToEnd
RichTextBox1.Text = _answer
webRes.Close()
webRes = Nothing
webReq = Nothing
任何想法,暗示表示讚賞!
在此先感謝
克里斯
您好Martin,thx爲快速響應。連接在TIME_WAIT中。我在很短的時間內向服務器發佈了很多這些請求。我猜測所有的65536連接都「用完了」。 – Chris 2011-05-31 10:37:04
如果您正在進行壓力測試,則可以更改等待時間。當我測試服務器時,爲了避免所有這些套接字用完,我將它縮短到了6秒。它位於註冊表的某個位置 - 您應該能夠找出Google上的位置。 – 2011-05-31 10:55:43
我能夠通過使用TCP套接字選項來避免TIME_WAIT狀態(如我自己的回答中所述) – Chris 2011-06-14 14:10:04