2013-05-29 29 views
0

我創造出有很多客戶端的服務器解決方案。使用arraylist存儲用戶信息和套接字。廣播消息...Java多客戶端服務器套接字。管道破裂檢測

在客戶端,

當服務器關閉,無一例外會扔,我可以捕獲該異常並做 相應的動作。

但在服務器端,

當客戶端離線時,服務器不會拋出異常。有沒有什麼方法可以實現。

我現在用發送boardcast消息每10秒鐘看看連接是否健康或不這樣做。而不是縮短健康檢查boardcast messgae之間的時間間隔。如果有任何方法可以這樣做,比如setListener?

回答

1

有很多這種類型在Java中的連接解決方​​案(如Apache米娜),但儘管如此,除非客戶端發送消息通知其是即將斷開沒有其他的方式來告訴除非服務器服務器和客戶端之間的心跳失敗,這聽起來像你已經實施。您可以看到使用Listener作爲故障安全解決方案的問題,因爲如果客戶端發生故障,它永遠不會讓服務器知道,並且您將有一個孤立的會話。

+0

沒有在客戶端套接字任何的OnClose方法?或者它可以實現它嗎?謝謝 –

+1

你將不得不實施它。就像我說的那樣,它仍然不完美。如果客戶端設備上的電源關閉會怎麼樣?它不會告訴服務器任何服務器將在下一次心跳上發生錯誤。 – shibbybird

+0

我知道它不會告訴服務器任何東西。我將實施自己。但是如果有異常拋出,我可以在catch塊內調用一個回調方法。但如果我強制關閉設備或程序。客戶端中也沒有顯示錯誤。所以唯一的解決方案是在服務器的下一個心跳上發生錯誤?順便說一句謝謝:D –

相關問題