【发布时间】:2021-08-15 10:07:11
【问题描述】:
我正在使用 TCP 套接字上的阻塞读/写实现多线程服务器,其中 InputStream 和 OutputStream 原语由适当的 Reader/Writer 封装。
如果客户端断开连接,InputStreamReader's read() 方法会返回-1,但如果客户端连接完好无损,它会无限期地等待。我该如何克服这个问题?
【问题讨论】:
-
“客户端连接在 TCP 套接字连接中丢失”是没有意义的。不清楚您在问什么,除非您要查找的是套接字读取超时。
-
抱歉造成误会。在我的例子中,客户端有一个超时,之后操作终止。 ruby 客户端有一个围绕这个函数调用的 Timeout::timeout。
-
那么你的问题是什么?超时跳闸-> 出了点问题。可能是网络或慢速服务器或其他一些问题,但这是您唯一可用的机制。
-
NB "连接在一个 TCP 连接内终止" 也是没有意义的。
标签: java multithreading sockets server tcp