伺服器若只呼叫一次 listener.AcceptTcpClient(),僅能接受第一個用戶端;後續連線雖在 OS 層建立 (netstat 顯示 ESTABLISHED),但程式碼未處理。
Console.WriteLine("Start Listening ...");
while (true)
{
TcpClient client = listener.AcceptTcpClient(); // 同步阻塞,直到有連線
Console.WriteLine("Client Connected! {0} <-- {1}",
client.Client.LocalEndPoint, client.Client.RemoteEndPoint);
// 實務上這裡應啟動新執行緒/Task 處理該 client,避免阻塞主迴圈
}
// Server
Server is running ...
Start Listening ...
Client Connected! 127.0.0.1:8500 <-- 127.0.0.1:5305
Client Connected! 127.0.0.1:8500 <-- 127.0.0.1:5306
Client Connected! 127.0.0.1:8500 <-- 127.0.0.1:5307
// Client (迴圈連 3 次)
Client Running ...
Server Connected! 127.0.0.1:5305 --> 127.0.0.1:8500
Server Connected! 127.0.0.1:5306 --> 127.0.0.1:8500
Server Connected! 127.0.0.1:5307 --> 127.0.0.1:8500
本系列同步基礎篇結束。下一階段將介紹: