配置Java套接字以在断开连接时快速失败?
时间:2020-03-05 18:42:06 来源:igfitidea点击:
我的服务器上有一个侦听端口,我正在使用Java类和Socket接口连接到该侦听端口,即
Socket mySocket = new Socket(host,port);
然后,我抓起一个OutputStream,在自动刷新模式下用一个PrintWriter装饰,除了监听端口关闭之外,我在笑。然后我得到
tcp4 0 0 *.9999 *.* LISTEN tcp 0 0 127.0.0.1.45737 127.0.0.1.9999 CLOSE_WAIT
而且我似乎无法在套接字上使用isConnected()
方法尝试的程序中检测到该问题,但似乎不知道连接已关闭。
下次尝试写入套接字时,我想知道该问题,以便我可以尝试重新连接并报告该问题。
有什么建议吗?
谢谢大家
解决方案
回答
设置较短的超时时间?
isOutputShutdown()是否不能得到我们想要的东西?
我们总是可以构建一个" SocketWatcher"类,该类以其自己的"线程"旋转,并反复尝试将空字符串写入" Socket",直到引发" SocketClosedException"。
回答
设置其他线程以从套接字读取。它将阻塞直到套接字关闭,然后将引发异常。捕获该异常以立即检测到关闭。