2012-11-22 20 views
1

My WinCE設備(C#,CF 3.5)通過套接字與SERVER進行通信。套接字操作遇到死網

當它工作超過12小時它斷開連接,並且發生此ExceptionA socket operation encountered a dead network

對於我所讀到的可能是公共IP更改。但在我的代碼中,我重新連接到新的IP,所以我不知道爲什麼拋出這個異常。

+0

哪個調用完全通過此異常? – alk

回答

0

如果你在移動設備上,我會說它是設備的IP地址發生變化。

甚至更​​多:網絡提供商可能會每12小時關閉並重新啓動連接設備的整個網絡。

如果收到WSAENETDOWN,應重新啓動應用程序的整個IP客戶端部分。

+0

感謝@alk,我通過在12小時之前重新啓動GPRS連接來解決它。 –

0

服務器應該有一個靜態 IP地址。如果它有一個動態 IP地址,每當一個新的IP地址分配給您的服務器時,您可能會遇到此問題。

如果是這種情況,那麼你可以/應該編寫你的應用程序來捕獲這個特定類型的異常(SocketException,也許?),處理該異常(也許是一個MessageBox讓用戶知道發生了什麼),以及讓您的代碼使用新的服務器ID地址重新輸入例程。

您可能需要重新初始化套接字連接。

+0

感謝您的回答,我已經這樣做了:每次連接失敗時,我都會重新初始化套接字,然後通過DNS名稱連接到服務器,找出哪個是我的IP。在我的設備中,我通過GPRS連接,是否可能是導致問題的IP?我做了另一次嘗試,並在12小時斷開連接 –