我正在使用Java套接字客戶端。在服務器仍然連接到我的客戶端但它不會對我的消息發送響應的情況下 - 我最終會得到讀取超時異常。如何連接和關閉插座?
在這種情況下,我想測試,看看我是否應該重新連接我的套接字或只是讓它重新使用它。
我用這個條件:
if (!socket.isConnected() || socket.isClosed() || !socket.isBound()) {
try {
socket.close();
} catch (IOException e1) {
}
// Wait on a new connection
socket = connectSocket(.....);
}
但我似乎總是重新連接。當我登錄的布爾屬性的值,我看到:
連接:真正的關閉:真正的約束:真
怎樣纔可以連接並關閉?
TIA
方法調用不是原子的......也許另一個線程正在關閉isConnected()和isClosed()調用之間的套接字?也許首先同步套接字對象? – Powerlord 2010-09-13 14:02:24
如果您只是將「isConnected()」和「isClosed()'的檢查順序顛倒過來,就很容易測試。 – 2010-09-13 14:15:23