gpt4 book ai didi

java - Socket.close() 怎么会失败(没有抛出异常)?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:01:16 25 4
gpt4 key购买 nike

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

我在调试器中验证了对 close() 的调用确实发生了。此外,它不会抛出异常。尽管如此,套接字报告已连接。我知道,因为有另一个线程 wait 正在等待它断开连接。此线程稍后应该重新连接它,但没有这样做,因为调用 isConnected() 一直返回 true

这会导致既没有读取数据,也没有清理套接字并再次重新连接的情况。

如果调用 Socket.close(),有什么方法可以让它静默失败吗?

最佳答案

isConnected 并不意味着“已连接到服务器”而是“曾经连接过”。如果您想知道套接字是否已关闭,请使用 isClosed

关于java - Socket.close() 怎么会失败(没有抛出异常)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6411960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com