ServerSocket 提供三大標準選項控制接受連接超時、端口重用、接收緩衝區大小,Java 5.0 新增效能偏好設定。本文詳細說明各選項的 API、行為差異、程式碼範例與實務建議。
setSoTimeout(int ms) / getSoTimeout()SocketTimeoutException。bind() 前或後呼叫。ServerSocket ss = new ServerSocket(1234);
ss.setSoTimeout(3000); // 3 秒無連接拋出例外
setReuseAddress(true) / getReuseAddress()ServerSocket 綁定(需在 bind() 前設定)。true。ServerSocket 綁定同端口時,系統隨機選擇一個接收連接;該實例必須 close() 才輪到下一個。setReceiveBufferSize(int bytes) / getReceiveBufferSize()accept() 回傳的每個 Socket(除非單獨覆寫)。bind() 前設定。serverSocket.setPerformancePreferences(connectionTime, latency, bandwidth);
三參數相對重要性(0~任意整數),影響 JVM 底層 Socket 實作策略(如 Nagle 演算法、擁塞控制)。
熟練掌握 ServerSocket 選項,能針對不同業務(高併發短連、大檔傳輸、即時互動)精準調校網路參數,提升伺服器穩定度與效能。