gpt4 book ai didi

java - 如何从客户端检测网络断开(JAVA)

转载 作者:行者123 更新时间:2023-12-01 06:13:38 25 4
gpt4 key购买 nike

我写了java客户端服务器socket连接代码。服务器接受客户端连接,然后服务器使用 PrintStream 发送数据,客户端在 readline() 中读取数据。之后,客户端将在readline中等待服务器。如果出现网络断开,客户端会一直在readline中等待,并且永远不会退出readline。有没有办法检测客户端本身的断开连接?或者我是否必须编写新的心跳线程来检查网络断开情况?

最佳答案

在套接字上打开套接字选项 SO_KEEPALIVE。这将启用 TCP 协议(protocol)中内置的心跳功能。

这是打开此功能的简单方法。

Socket socket = ...; // Your socket on the client side
socket.setKeepAlive(true);

如果连接的另一端停止响应心跳,您将在调用从套接字读取数据时收到 IOException

但是,超时时间为 2 小时。这对于您的需求来说可能太长(您没有指定)

关于java - 如何从客户端检测网络断开(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29426730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com