我就是用android 寫了一個簡單的socket TCP 長連接。
發資料使用的代碼如下:
mOutputStream = mClientSocket.getOutputStream();
mOutputStream.write(buffer);
mOutputStream.flush();
客戶端和服務端的代碼相同,都是通過獲取到的Socket,得到位元組流,然后通過流直接寫資料。
假設,現在客戶端和服務端的socket TCP已建立成功,并且雙方正常通信;
我主動關閉客戶端或者服務端,另一方均可以感應到,出現例外等,沒有問題;
但是,
如果我拔掉網線,卻發現雙方都不知道,客戶端可以正常發送資料給服務端;服務端可以正常發送資料給客戶端,只是對方收不到而已。
我拔掉網線大約20分鐘,期間不停的互發資料,一直沒有報錯,讓我很詫異。
TCP連接不是可靠的么,拔掉網線都不知道,這是為什么?
uj5u.com熱心網友回復:
長鏈接斷開是對方手動請求的,突然拔掉網線是無法感知到的,可以嘗試進行心跳檢測或者設定超時時長轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/79928.html
標籤:Android
上一篇:開發原始碼
下一篇:2g ram的Android手機
