Socket.close()如何失败(没有抛出异常)?

Han*_*etz 3 java sockets

在多线程应用程序中,我有一个线程从套接字连接读取数据,直到发生读取超时.然后它设置一个关闭标志,向自己发送一个中断信号并在退出之前进行一些清理.作为清理的一部分,它调用close()客户端套接字.

我在调试器中验证了close()实际发生的调用.此外,它不会抛出异常.仍然,套接字报告正在连接.我知道,因为有另一个线程wait让它断开连接.此线程稍后应重新连接它,但不会因为调用isConnected()一直返回true.

这导致既不读取数据也不清除套接字并再次重新连接的情况.

如果打电话Socket.close(),有没有办法可以默默地失败?

dac*_*cwe 6

isConnected并不意味着"已连接到服务器",而是"已连接".使用isClosed,如果你想知道,如果已经关闭了套接字.