2015-08-20 76 views
0

我正在進行套接字編程。有沒有辦法立即檢測服務器與客戶端的斷開連接。如何在Java(Android)套接字通信中立即檢測服務器與客戶端斷開連接

我用socket.isConnected,isBound方法,但我沒有得到好的結果。

我試圖不斷地從流中讀取數據來檢查,但是它阻止瞭如果數據不可用或從服務器返回並且我不想每次都發送垃圾數​​據來檢查與服務器。

請提出建議。

+0

您是否在談論TCP?還是UDP? – EJP

+0

我正在談論TCP套接字連接 – Prabal

回答

-1

這取決於您使用的是哪種套接字類型。即便如此,爲您的特定目的實施保活機制也是不可避免的。

如果連接仍然存在,默認的TCP保持連接機制每2小時檢查一次(!)。此默認值可以更改,但可能無法使用。請參見:另一方面

Does a TCP socket connection have a "keep alive"?

UDP是無狀態的;沒有聯繫。 socket.isConnected()應該解釋的上下文是它是否綁定到本地端口。

對於UDP來說,絕對需要來回發送ping/pongs來確定連通性。

希望它有幫助。

+0

UDP isConnected()對本地端口沒有任何說明。它指示套接字是否連接到遠程地址。 – EJP

+0

這是不真實的......因爲UDP是無狀態的,所以永遠不會有與遠程地址的連接。這方面的'連接'意味着DatagramSocket將簡單地丟棄來自其他地址的任何傳入數據報。從技術上講,從來沒有真正的聯繫。 – whitebrow

相關問題