2012-03-05 63 views
-1

我有用於發送和接收短信的Sever-Client應用程序,它可以正常工作到上個月。但之後我得到了TCP/Ip套接字異常。我調試服務器應用程序並發現異常:Tcp/IP Socket異常

System.IO.IOException:無法從傳輸連接讀取數據:現有連接被遠程主機強制關閉。 ---> System.Net.Sockets.SocketException:現有連接被遠程主機 強制關閉System.Net.Sockets.EndReceive(IAsyncResult asyncResult) System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)

當我調試更多時,客戶端上出現同樣的異常。 我經歷了許多類似於此的線程,人們提出這是與防火牆/ NAT /防病毒攔截端口有關的網絡問題,這是由於客戶端之間的這種連接造成的服務器干擾。 我使用了2999端口,並且多個客戶端在同一端口上與服務器通信。 任何線索?究竟是什麼原因?

+1

你有沒有試過在Wireshark的網絡層面看看發生了什麼?如果沒有,請這樣做,並在您的問題中包含這些信息。 – 2012-03-05 07:21:56

+0

另外,如果直到上個月它確實工作的很好,唯一有意義的更改*是* firewall/nat/antivirus阻止端口配置更改。 – Jason 2012-03-05 07:28:50

+0

主機是否可能更改爲https? – Induster 2012-03-05 07:36:55

回答

1

現在這種情況一直髮生還是有時會發生?如果它每隔一次又一次發生,我會做的就是把它放在一個try catch語句中,當這個錯誤被拋出時,重新連接並重試並記錄它發生的事情,以及當它被拋出時發生的所有事情當你獲得更多關於何時被拋出的信息時,你可以回頭找出問題所在。如果它一直在發生,那麼一切都會迫使你的連接關閉女巫可能是一個防火牆,因此爲了測試我會關閉所有的防火牆和防病毒軟件。

+0

有時會發生這種情況。我在我的應用程序中執行了日誌(try,catch),並且在例外情況下,我重新啓動客戶端以再次連接它,有時這會起作用,有時客戶端無法連接。 – 2012-03-05 10:19:10

+0

它是不同的計算機或導致此錯誤的同一臺計算機?或任何地方你沒有循環回來,一切都只是結束而不關閉套接字?如果你可以發佈你的一些代碼,它可能會有所幫助。 – Shredder2500 2012-03-05 17:33:15

+0

是服務器位於不同的計算機上,客戶端位於不同的計算機上。 – 2012-03-06 08:52:29