2011-04-27 159 views
0

我有一個應用程序正在發送Web請求,經過一段時間後我們開始發生連接超時錯誤。在TCP/IP數據包的分析,可以發現以下爲每個連接嘗試發生:爲什麼此連接保持關閉 - SYN-> SYN,ACK-> ACK-> RST,ACK

號時間源目標協議信息

98635 2011-04-21 10:13:47.192237 172.22.3.250 172.22.3.100 TCP [ TCP端口號重用] httpx> http-alt [SYN] Seq = 0 Win = 65535 Len = 0 MSS = 1460

98639 2011-04-21 10:13:47.192397 172.22.3.100 172.22.3.250 TCP http-alt > httpx [SYN,ACK] SEQ = 0 ACK = 1運= 5840長度= 0 MSS = 1460

98641 2011-04-21 10:13:47.192425 172.22.3.250 172.22.3.100 TCP httpx> HTTP-ALT [ACK] Seq = 1 Ack = 1 Win = 65535 Len = 0

98646 2011-04-21 10:13:47.192502 172.22.3.250 172.22.3.100 TCP httpx> http-alt [RST,ACK] Seq = 1 Ack = 1 Win = 0 Len = 0

一旦發生這種情況,客戶機必須重新啓動才能解決問題。重新啓動客戶端或服務器應用程序或重新啓動服務器不起作用。的工作和非工作消息之間​​的數據包詳細比較揭示標誌沒有差異等

謝謝

尼爾

+0

忽略提及,我們正在使用MFC類:CInternetConnection,CHttpConnection,CHttpFile – Neil 2011-04-27 14:20:48

+1

這裏沒有證據顯示超時,除非您使用病態低超時值。客戶決定在完成77ms後重置連接。該客戶端的硬件或操作系統有問題。 – EJP 2012-05-14 06:46:04

回答

0

TCP Port numbers reused是一個線索。這可能是您的客戶正在重新使用應該關閉的舊連接的端口號。

您的客戶端是否綁定到靜態源端口?如果是,則可能是客戶端操作系統拒絕來自服務器的數據包,因爲它認爲它們屬於舊連接。操作系統拒絕數據包,這就是爲什麼只有客戶端重新啓動才能解決問題。 (或者嘗試等待幾分鐘)。

在客戶端打開連接時,請勿分配源端口。

+0

我們使用MFC HTTP類,所以我無法控制端口分配。我們還可以看到,即使對於重用端口,它也可以在一段時間內運行,在開始失敗之前通過可用端口循環幾次。 – Neil 2011-04-27 15:14:21

相關問題