的損失我有一個客戶端,並在Java服務器程序。服務器通過wifi向客戶端發送數據。在客戶端斷開wifi連接會導致它拋出異常並退出接收循環。服務器仍然繼續發送數據。服務器使用的方法是oos.writeObject()。如何檢測服務器端客戶端的無線網絡斷開並導致服務器退出發送循環?檢測連接
檢測連接
回答
之所以你的客戶端(在某些類型的WiFi連接的故障模式),當連接消失馬上注意到是因爲WiFi接口是本地客戶機和操作系統,只要它是眼淚下來檢測爲關閉。從服務器的角度來看,這是一個遙遠的網絡鏈接失敗。
當連接出現故障,在第一服務器將繼續緩衝數據。如果緩衝區(服務器的操作系統緩衝區加上TCP窗口大小)變滿,則服務器將嘗試發送更多數據時阻塞。
以後,如果連接仍然向下,服務器將宣佈該連接超時,你會得到一個異常。如果連接恢復,則緩衝區將清空並恢復正常的數據流。
即使你能,你實際上並沒有想出來馬上改變的事情,使服務器的連接時候,任何遙遠的網絡跳失敗。如果你這樣做了,你的連接就會非常脆弱:每一次小的網絡重新聚合事件或短暫的短暫故障都會破壞你的連接。
非常感謝您的解釋。我只需要知道是否有一些方法類似於setSoTimeout()進行讀取,可以在此使用,以便在固定持續時間後至少關閉連接。 – user1761399 2013-02-26 03:28:51
肯定的是:你可以使用的信號,或取消在做文字線程,或者使用非阻塞I/O和插座後放棄還沒來供所需的時間量之後寫,等... – Celada 2013-02-26 14:33:24
燦你直接指向一些使用非阻塞I/O或信號放棄寫入的鏈接。我們如何檢測到套接字不可用於寫入? – user1761399 2013-03-16 16:03:47
- 1. 連接池檢測
- 2. 檢測NSUrlConnection連接問題
- 3. 檢測網絡連接
- 4. 檢測到域的連接
- 5. vimrc檢測遠程連接
- 6. 檢測jsch斷開連接
- 7. 檢測互聯網連接
- 8. 檢測eventmachine斷開連接並測試重新連接
- 9. 檢測傳入的套接字連接
- 10. socket.io斷開連接事件,客戶端斷開連接檢測
- 11. 檢測可穿戴式連接/從Android手機斷開連接
- 12. 在C#中檢測網絡狀態(連接 - 斷開連接)
- 13. 在.NET中檢測3G網絡連接
- 14. 如何檢測TCP連接丟失?
- 15. 檢測網絡連接帶寬(Android)
- 16. 在Android上檢測網絡連接?
- 17. Gevent-Websocket檢測關閉連接
- 18. 如何檢測連接狀態
- 19. 檢測打開的數據庫連接
- 20. 檢測互聯網是否連接
- 21. .NET/ADO.NET:檢測連接池限制
- 22. 如何檢測電源連接狀態?
- 23. NIO - 檢測已關閉的連接
- 24. Ruby:TCPServer的連接超時檢測
- 25. 檢測任何連接網絡的人
- 26. 檢測Internet連接,如在Gmail中Javascript
- 27. 檢測與SQL的非關閉連接
- 28. 檢測連接是否可能
TCP或UDP或其他協議? – Celada 2013-02-24 16:53:01
使用的協議是TCP。 – user1761399 2013-02-25 03:16:06