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

如何在Java(Android)套接字通信中立即检测服务器与客户端的断开连接,java,android,sockets,Java,Android,Sockets,我正在从事套接字编程。是否有任何方法可以立即检测到服务器与客户端的断开连接 我使用了socket.isConnected和isBound方法,但没有得到好的结果 我试图连续地从流中读取数据以进行检查,但它会阻止数据不可用或从服务器返回,并且我不希望每次都写入垃圾数据来发送以检查与服务器的连接 请提出建议。这取决于您使用的插座类型。即使如此,为您的特定目的实施保持活力机制也是不可避免的 默认的TCP保持活动机制每2小时(!)检查一次连接是否仍然存在。此默认值可以更改,但可能不起作用。见: 另一方

我正在从事套接字编程。是否有任何方法可以立即检测到服务器与客户端的断开连接

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

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


请提出建议。

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

默认的TCP保持活动机制每2小时(!)检查一次连接是否仍然存在。此默认值可以更改,但可能不起作用。见:

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

对于UDP,绝对需要来回发送乒乓球以确定连接


希望有帮助。

isConnected()
for UDP并不表示任何关于本地端口的信息。它指示套接字是否连接到远程地址。这是不真实的。。。因为UDP是无状态的,所以从来没有与远程地址的连接。”在这方面,“连接”意味着DatagramSocket将简单地丢弃来自其他地址的任何传入数据报。从技术上讲,从来没有真正的连接。你是说TCP吗?还是UDP?我说的是TCP套接字连接