2012-03-19 105 views
1

我正在做一個C#客戶端/ Java服務器聊天室,現在一切正常,除了一件事: 經過一段時間(一個小時左右)沒有使用應用程序(或使用它,我不知道)它給了我在C#客戶端SocketException在socket.EndReceive()函數:C#/ Java Socket連接丟失了嗎?

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 

待辦事項Java或C#套接字連接閒置一段時間後關閉?或者它只是tcp協議? 什麼是最好的方法來解決它?

謝謝大家!

巴斯

回答

1

待辦事項Java或C#套接字連接閒置一段時間後關閉?

然而,防火牆和NAT尤其是做網關,常常默默。

什麼是最好的方法來解決它?

實施心跳過程。即客戶機和/或服務器週期性地發送(例如,每10或30秒左右)一個特殊的消息,該消息只是用於保持連接活動並且更快地檢測失敗的對等體。

+0

我剛剛創建了一個keepalive數據包,每分鐘發送一次。還是必須更頻繁?當它被修復時,我會將答案標記爲已接受。謝謝! – Basaa 2012-03-19 14:03:15