Socket 選項

SO_TIMEOUT選項:

1,socket

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException
啓用/禁用帶有指定超時值的 SO_TIMEOUT,以毫秒爲單位。將此選項設爲非零的超時值時,在與此 Socket 關聯的 InputStream 上調用 read() 將只阻塞此時間長度。如果超過超時值,將引發 java.net.SocketTimeoutException,雖然 Socket 仍舊有效。選項必須在進入阻塞操作前被啓用才能生效。超時值必須是 > 0 的數。超時值爲 0 被解釋爲無窮大超時值。

參數:
timeout - 指定的以毫秒爲單位的超時值。
拋出:
SocketException - 如果底層協議出現錯誤,例如 TCP 錯誤。
從以下版本開始:
JDK 1.1
另請參見:
getSoTimeout()
2,serverSocket

setSoTimeout

public void setSoTimeout(int timeout)
                  throws SocketException
通過指定超時值啓用/禁用 SO_TIMEOUT,以毫秒爲單位。將此選項設爲非零的超時值時,對此 ServerSocket 調用 accept() 將只阻塞此時間長度。如果超過超時值,將引發 java.net.SocketTimeoutException,雖然 ServerSocket 仍舊有效。選項必須在進入阻塞操作前被啓用才能生效。超時值必須是 > 0 的數。超時值爲 0 被解釋爲無窮大超時值。

參數:
timeout - 指定的超時(以毫秒爲單位)
拋出:
SocketException - 如果在底層協議中存在錯誤,如 TCP 錯誤。
從以下版本開始:
JDK1.1
另請參見:
getSoTimeout()
在通常情況下,ServerSocket類的accept方法在等待客戶端請求時處於無限等待狀態。如HTTP服務器在沒有用戶訪問網頁時會一直等待用戶的請求。一般不需要對服務端設置等待客戶端請求超時,但在某些特殊情況下,服務端規定客戶端必須在一定時間內向服務端發出請求,這時就要設置等待客戶端請求超時,也就是accept方法的超時時間。當設置客戶端請求超時後,accept方法在等待超時時間後拋出一個SocketTimeoutException異常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章