从JavaDoc的用于setSoTimeoutjava.net.Socket.setSoTimeout是否可靠?
启用与 指定超时/禁用SO_TIMEOUT,以毫秒为单位。 如果将此选项设置为非零 超时,则与此 套接字关联的 InputStream上的read()调用将仅阻止该时间量 。如果超时到期,则提出一个 java.net.SocketTimeoutException异常,即 ,尽管Socket仍然是 有效。在进入阻止 操作之前必须启用该选项 才能生效。超时 必须> 0。超时为零时,将 解释为无限超时。
从各种互联网上的帖子我已阅读,SO_TIMEOUT采用Socket C API(例如here)时,是相当不可靠的。
因此,这个问题是否可靠使用setSoTimeout
检查失控会话?
如果没有,您可以推荐什么技术来对套接字会话设置时间限制?
+1 - 链接的帖子确实非常困惑。除了UDP废话超时之外,他似乎认为你应该能够发送任意大的UDP数据报。 – 2009-11-10 00:05:21