傳統 TcpListener.AcceptSocket 會阻塞主線程,無法同時處理 UI 或其他任務。.NET Socket 提供異步模式(基於 IOCP),本文介紹基本原理並展示一個 P2P 通訊演示程序架構。
TcpListener listener = new TcpListener(399);
listener.Start();
while (true)
{
if (listener.Pending())
{
Socket client = listener.AcceptSocket();
// 處理客戶端...
}
else Thread.Sleep(100); // 輪詢浪費 CPU
}
start 400)監聽端口。connect 192.168.1.100 400)。get x y 查詢網格值、set x y v 設置網格值。shutdown 斷開當前連接。
下篇將詳細講解 BeginAccept、BeginConnect、BeginReceive、BeginSend 四大異步操作的具體實現與回調鏈。