2012-09-01 152 views
-2

我正在開發一個基於GUI和數據庫的Java多客戶端服務器程序。客戶端對程序的需求是確保始終與服務器連接,並且如果連接丟失(服務器停機/套接字或流問題),應該通知它。Java通過套接字連續檢查連接

換句話說,我需要一個連續檢查到服務器連接的解決方案。

這樣做的最好方法是什麼?

回答

-1

實施心臟的跳動協議...

如果你不該做什麼,你可以使用一個連接監聽線程 Socket.isConnected

+0

好的我會這麼做的。謝謝。 – Onca

+0

Socket.isComnected()只告訴你是否曾經連接* socket。*它不知道任何有關*連接的狀態* – EJP

+0

它告訴你一個套接字是否綁定併成功連接......實際上一個連接的狀態,下次讀取引用,然後投票下來! –

-1

檢查套接字連接被關閉。

if(Socket.isClosed()) { 
    //reconnect or alert the user 
} //end if 
+2

這隻會告訴你是否自己關閉了插座。它沒有告訴你有關連接。顯然你還沒有嘗試過。 -1。 – EJP

0

TCP/IP中沒有這樣的API。檢測TCP連接失敗的唯一方法是嘗試使用它。您可能會考慮在協議中添加心跳,但與客戶端人員一起檢查需求可能會更好。根據設計,TCP/IP沒有「撥號音」,並且在應用程序級別添加一個並不重要,容易出錯,並且帶來時間和空間開銷。