2012年11月27日

判斷JAVA Socket斷線方法

使用isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等方法,只能得知本地段是否有主動斷線,若server端發稱異常斷線,則這些方法還是會回傳true。

上網查詢,只到了有人分享了一個方法

sendUrgentData,查看文檔後得知它會往輸出流發送一個字節的數據,只要對方Socket的SO_OOBINLINE屬性沒有打開,就會自動舍棄這個字節,而SO_OOBINLINE屬性默認情況下就是關閉的

下面一段代碼就可以判斷遠端是否斷開了連接: 

try{
      socket.sendUrgentData(0xFF);
}catch(Exception ex){
      reconnect();
}
參考連結

沒有留言:

張貼留言