我正在開發一個基於GUI和數據庫的Java多客戶端服務器程序。客戶端對程序的需求是確保始終與服務器連接,並且如果連接丟失(服務器停機/套接字或流問題),應該通知它。Java通過套接字連續檢查連接
換句話說,我需要一個連續檢查到服務器連接的解決方案。
這樣做的最好方法是什麼?
我正在開發一個基於GUI和數據庫的Java多客戶端服務器程序。客戶端對程序的需求是確保始終與服務器連接,並且如果連接丟失(服務器停機/套接字或流問題),應該通知它。Java通過套接字連續檢查連接
換句話說,我需要一個連續檢查到服務器連接的解決方案。
這樣做的最好方法是什麼?
實施心臟的跳動協議...
如果你不該做什麼,你可以使用一個連接監聽線程 Socket.isConnected
檢查套接字連接被關閉。
if(Socket.isClosed()) {
//reconnect or alert the user
} //end if
這隻會告訴你是否自己關閉了插座。它沒有告訴你有關連接。顯然你還沒有嘗試過。 -1。 – EJP
TCP/IP中沒有這樣的API。檢測TCP連接失敗的唯一方法是嘗試使用它。您可能會考慮在協議中添加心跳,但與客戶端人員一起檢查需求可能會更好。根據設計,TCP/IP沒有「撥號音」,並且在應用程序級別添加一個並不重要,容易出錯,並且帶來時間和空間開銷。
好的我會這麼做的。謝謝。 – Onca
Socket.isComnected()只告訴你是否曾經連接* socket。*它不知道任何有關*連接的狀態* – EJP
它告訴你一個套接字是否綁定併成功連接......實際上一個連接的狀態,下次讀取引用,然後投票下來! –