歡迎進入Java社區論壇,與200萬技術人員互動交流 >>進入
ServerSocket類有以下三個選項:
1. SO_TIMEOUT: 設置accept方法的超時時間。
2. SO_REUSEADDR:設置服務端同一個端口是否可以多次綁定。
3. SO_RECBUF:設置接收緩沖區的大小。
一、SO_TIMEOUT選項
可以通過SeverSocket類的兩個方法(setSoTimeout和getSoTimeout)來設置和獲得SO_TIMEOUT選項的值,這兩個方法的定義如下:
setSoTimeout方法的timeout參數表示accept方法的超時時間,單位是毫秒。在通常情況下,ServerSocket類的accept方法在等待客戶端請求時處於無限等待狀態。如HTTP服務器在沒有用戶訪問網頁時會一直等待用戶的請求。一般不需要對服務端設置等待客戶端請求超時,但在某些特殊情況下,服務端規定客戶端必須在一定時間內向服務端發出請求,這時就要設置等待客戶端請求超時,也就是accept方法的超時時間。當設置客戶端請求超時後,accept方法在等待超時時間後拋出一個SocketTimeoutException異常。下面的代碼演示了如何設置和獲得SO_TIMEOUT選項的值,超時時間通過命令行參數方式傳入AcceptTimeout.
執行下面的命令: