如何在Java(Android)套接字通信中立即检测到客户端与客户端的断开连接

时间:2015-08-20 11:35:37

标签: java android sockets

我正在进行套接字编程。有没有办法立即检测服务器与客户端的断开连接。

我使用了socket.isConnected,isBound方法但是我没有得到好的结果。

我试图连续读取流中的数据进行检查,但它会阻止数据不可用或从服务器返回,我不想写垃圾数据每次发送以检查与服务器的连接

请提出任何建议。

1 个答案:

答案 0 :(得分:-1)

这取决于您使用的套接字类型。即便如此,为您的特定目的实施保持活动机制也是不可避免的。

如果连接仍然存在,默认TCP保持活动机制每2小时(!)检查一次。可以更改此默认值,但可能无效。参见:

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

另一方面,UDP是无状态的;没有联系。应该解释socket.isConnected()的上下文是它是否绑定到本地端口。

对于UDP,绝对需要来回发送ping / pongs以确定连接性。

希望它有所帮助。