如何检查套接字当前是否在 Java 中连接?
我试图找出Java TCP套接字当前是否连接,以下内容似乎只是告诉我套接字是否在某个时候已经连接 - 而不是它当前是否仍然连接。
socket.isConnected();
任何帮助赞赏,谢谢。
我试图找出Java TCP套接字当前是否连接,以下内容似乎只是告诉我套接字是否在某个时候已经连接 - 而不是它当前是否仍然连接。
socket.isConnected();
任何帮助赞赏,谢谢。
socket.isConnected()
一旦客户端连接(甚至在断开连接后)返回总是正确的奇怪!socket.getInputStream().read()
returns -1
如果客户端断开连接socket.getInetAddress().isReachable(int timeout)
:从可访问(整型超时)
测试该地址是否可访问。实现尽最大努力尝试访问主机,但防火墙和服务器配置可能会阻止请求,从而导致无法访问状态,而某些特定端口可能可访问。如果可以获得特权,则典型的实现将使用 ICMP ECHO 查询,否则它将尝试在目标主机的端口 7 (Echo) 上建立 TCP 连接。
假设您对协议有一定程度的控制,我非常喜欢发送检测信号来验证连接是否处于活动状态。它被证明是最能防止故障的方法,并且在连接断开时通常会为您提供最快的通知。
TCP保持警示符将起作用,但是如果远程主机突然断电怎么办?TCP 可能需要很长时间才能超时。另一方面,如果你的应用中有逻辑,该逻辑期望每 x 秒有一次检测信号回复,则当你第一次未获得检测信号时,你就知道连接不再有效,无论是由于网络还是远程端的服务器问题。