ServerSocket 是 Java 實作 TCP 伺服器的核心類別,負責綁定埠號、監聽連線請求。建構子接受兩個參數:埠號與回log(等待佇列長度)。
// 綁定埠 80,回log 長度 5
ServerSocket serverSocket = new ServerSocket(80, 5);
第二個參數為選填,預設值 50。回log 代表作業系統允許排隊的未處理連線數,超過則拒絕新連線。
accept() 方法會封鎖直到有客戶端連入,回傳新的 Socket 物件代表此連線:
Socket clientSocket = serverSocket.accept();
// 建立資料流
DataInputStream in = new DataInputStream(clientSocket.getInputStream());
DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream());
accept() 取得客戶端 Socketaccept() 為阻塞呼叫,若佇列無連線請求,執行緒將進入等待狀態。單執行緒迭代式伺服器一次僅能服務一個客戶端,高併發場景需採用執行緒池或 NIO 非阻塞模式。