1. 程式人生 > >安卓 java有效判斷Socket連線斷開和安卓TCP測試APP(客戶+服務端一體)

安卓 java有效判斷Socket連線斷開和安卓TCP測試APP(客戶+服務端一體)

1. 利用socket提供的isConnected()與isClosed()方法來判斷。但這種方式只是本地判斷,只是本地操作connect()或close()方法後儲存的一個狀態,對於遠端伺服器主動斷開就沒有用了。

2. 利用socket中的sendUrgentData()來判斷。這種方法不管是客戶端主動斷開還是伺服器主動斷開,亦或者是異常斷開都是有用的。但這種方法有一個明顯的缺點,它得向伺服器傳送資料,相當於使用OutputStream,這就會影響正常通訊的速度,並且會影響另一端的執行。


3. 利用BufferedReader中的readLine()來判斷。當伺服器主動斷開時,readLine()方法會返回null。注意這種方式要求傳送的資訊中必須有換行符'\r\n'、'\r'或'\n'。如果伺服器傳送資訊中不含換行符的話,那就唯有等到socket關閉時才有機會讀到。


4. 利用InputStream.read()或BufferedReader.read()來判斷。當伺服器主動斷開時,read()會返回-1
.............