首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# Socket 聊天室入門:TCP 服務端/客戶端模板與擴展方向

     編輯:程式設計綜合問答

核心模型

**服務端**:`TcpListener` → `AcceptTcpClientAsync` → 每客戶端啟動 `Task` 循環 `ReadAsync`/`WriteAsync`。
**客戶端**:`TcpClient` → `ConnectAsync` → 兩條 Task 分別處理發送 (Console.ReadLine) 與接收 (網絡流讀取)。

關鍵代碼片段 (服務端)

var listener = new TcpListener(IPAddress.Any, 8888);
listener.Start();
while (true) {
    var client = await listener.AcceptTcpClientAsync();
    _ = Task.Run(() => HandleClient(client)); // 火力全開
}
async Task HandleClient(TcpClient client) {
    using (var stream = client.GetStream())
    using (var reader = new StreamReader(stream, Encoding.UTF8))
    using (var writer = new StreamWriter(stream, Encoding.UTF8) { AutoFlush = true }) {
        string line;
        while ((line = await reader.ReadLineAsync()) != null) {
            Broadcast(line); // 廣播給所有客戶端
        }
    }
}

擴展清單 (作業要求)

  1. **MySQL 持久化**:用戶表、消息表,EF Core / Dapper 操作。
  2. **高併發**:`SocketAsyncEventArgs` / `System.IO.Pipelines` / `Kestrel` 避免線程爆炸。
  3. **協議設計**:JSON/Protobuf 定義消息類型 (登錄、心跳、私聊、群聊)。
  4. **安全**:TLS (SslStream)、密碼加鹽哈希、Token 鑒權。

學習資源

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