如何在Java中检查Socket是否已连接?

27

我想知道一个 Java TCP Socket 是否当前已连接,下面的方法似乎只能告诉我这个 socket 是否曾经连接过,而不能确定它是否仍然连接着。

socket.isConnected();

希望能得到任何帮助,谢谢。


3
https://dev59.com/ZXNA5IYBdhLWcg3wa9Kp - Aziz
1
另一个:https://dev59.com/i3RB5IYBdhLWcg3w3K4J - Vineet Reynolds
在这里回答了:链接 - user207421
1个回答

16

假设您对协议有一定的控制权,我强烈建议发送心跳来验证连接是否活动。这已被证明是最可靠的方法,通常可以在连接断开时最快地通知您。

TCP保持连接的方式也可以使用,但如果远程主机突然断电怎么办?TCP可能需要很长时间才能超时。另一方面,如果您的应用程序中有逻辑期望每隔x秒获得心跳回复,则第一次未收到回复,您就会知道连接不再工作,可能是远程端的网络或服务器问题。

更多讨论,请参见Do I need to heartbeat to keep a TCP connection open?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接