我有一個SSLSocket池,我需要在借用對象前檢查套接字連接是否健全。如何檢查Java上的SSLSocket連接是否健全?
isConnected,isInputShutdown和isOutputShutdown是無用的,因爲它們不檢查雙方是否連接,如果我嘗試寫入或從套接字讀取,我可能會得到一個SocketException。
這裏是我的測試連接代碼:
if(sslSocket.isConnected() &&
!sslSocket.isInputShutdown() &&
!sslSocket.isOutputShutdown()){
valid = true;
}
此代碼不能正常工作,如上所述。
那麼,檢查SSLSocket(或普通Socket)是否健全的最佳方法是什麼?
我測試過在連接上發送一個字節並捕獲異常,但似乎這不會測試讀取操作,並且在稍後閱讀時可能會遇到異常。我可能在這方面是錯誤的,會做更多的測試。 – Isac 2010-08-25 16:55:44
同樣的事情,你不能測試你是否可以閱讀,直到你閱讀。在測試套接字是否打開以及從中讀取套接字的時間之間,遠程方可能已關閉連接。它在閱讀時甚至可能會關閉它。 – Bruno 2010-08-25 16:59:15
請記住,套接字的狀態是由對等體部分控制的。因此,您在本地計算機上執行的任何檢查都很容易立即失效。 – Darron 2010-08-25 17:00:07