我正在使用Java套接字客户端 . 在服务器仍然连接到我的客户端但它没有向我的消息发送响应的情况下 - 我最终得到一个读取超时异常 .
在这种情况下,我想测试是否应该重新连接我的套接字或只是让它重新使用它 .
我用这个条件:
if (!socket.isConnected() || socket.isClosed() || !socket.isBound()) {
try {
socket.close();
} catch (IOException e1) {
}
// Wait on a new connection
socket = connectSocket(.....);
}
但我似乎总是重新联系 . 当我记录布尔属性的值时,我看到:
connected:true closed:true bound:true
如何连接和关闭?
TIA
1 回答
This thread就此主题进行了一些有益的讨论 . 事实证明,如果(曾经)成功连接,Socket.isConnected将返回true .
从上面的帖子:
文档说:
而不是像人们期望的那样“如果套接字连接到服务器则返回true” .
可以通过查看Socket的来源来确认行为:
你也可以运行这个小测试片段:
哪个印刷品:
我必须说文档在这一点上还不太清楚,而且方法名称有点误导 .