socket類的方法中 isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,這些方法都是本地端的狀態,無法判斷遠端是否已經斷開連接,如果遠程服務器把socket關閉了,這些狀態都沒有任何的變化。
方法sendUrgentData,客戶端它會往輸出流發送一個字節的數據,只要對方Socket的SO_OOBINLINE屬性沒有打開,就會自動捨棄這個字節,而SO_OOBINLINE屬性默認情況下就是關閉的, 於是,下面一段代碼就可以判斷遠端是否斷開了連接:
socket.sendUrgentData(0xFF);