首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 異步 Socket 編程(一):非阻塞原理與 P2P 演示架構

     編輯:關於C語言

傳統 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
}

異步模式優勢

  • 主線程不阻塞,可響應 UI、定時器等其他事件。
  • 利用 IOCP 完成端口,線程池自動調度,擴展性極強。
  • 代碼結構清晰:發起操作 → 註冊回調 → 回調中處理結果並發起下一步操作。

P2P 演示程序功能

  • 每個節點可啟動服務(start 400)監聽端口。
  • 可連接其他節點(connect 192.168.1.100 400)。
  • 支援 get x y 查詢網格值、set x y v 設置網格值。
  • shutdown 斷開當前連接。

運行示意圖

P2P 通訊演示示意圖

後續篇章

下篇將詳細講解 BeginAccept、BeginConnect、BeginReceive、BeginSend 四大異步操作的具體實現與回調鏈。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved