我遇到了Java套接字API的一些问题.我正在尝试显示当前连接到我的游戏的玩家数量.很容易确定玩家何时连接.但是,确定玩家何时使用套接字API断开连接似乎不必要.
调用isConnected()已远程断开的套接字似乎总是返回true.同样,调用isClosed()已远程关闭的套接字似乎总是返回false.我已经读过,要实际确定套接字是否已关闭,必须将数据写入输出流并且必须捕获异常.这似乎是处理这种情况的一种非常不洁净的方式.我们不得不经常通过网络垃圾邮件垃圾邮件,以便知道套接字何时关闭.
还有其他解决方案吗?
我正在使用Java套接字客户端.在服务器仍然连接到我的客户端但它没有向我的消息发送响应的情况下 - 我最终得到一个读取超时异常.
在这种情况下,我想测试是否应该重新连接我的套接字或只是让它重新使用它.
我用这个条件:
if (!socket.isConnected() || socket.isClosed() || !socket.isBound()) {
try {
socket.close();
} catch (IOException e1) {
}
// Wait on a new connection
socket = connectSocket(.....);
}
Run Code Online (Sandbox Code Playgroud)
但我似乎总是重新联系.当我记录布尔属性的值时,我看到:
connected:true closed:true bound:true
如何连接和关闭?
TIA