從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