萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 網路基礎知識

C# 網絡編程實戰:Socket 監聽與連接完整教程(TCP 同步/異步模式)

系列規劃

  1. 基礎概念與操作(本文):TCP 協議、Socket 概念、三種聊天模式、監聽/連接基本操作。
  2. 字串傳輸範例:Client 發送 → Server 接收轉大寫 → 回傳。
  3. 異步傳輸強化:解決同步阻塞問題。
  4. 檔案傳輸實作:Client/Server 雙向收發檔案。
  5. 綜合聊天程式:線上聊天 + 檔案傳輸。

核心概念速覽

TCP 協議關鍵點

  • 面向連接、可靠、位元組流、全雙工。
  • 三次握手建立連接,四次揮手斷開。
  • 滑動視窗流控、擁塞控制(慢啟動、拋塞避免、快速重傳/恢復)。

Socket 本質

Socket = IP 地址 + 埠號 + 協議(TCP/UDP)。它是應用層與傳輸層的抽象介面,System.Net.Sockets.Socket 類別提供底層控制,TcpListener/TcpClient 為高層封裝。

三種聊天開發模式

模式特點適用場景
單執行緒同步阻塞程式碼簡單,一次只能處理一個連線教學、極簡工具
多執行緒同步每連線一執行緒,易寫但資源消耗大連線數較少(<100)的內部工具
異步 I/O (APM/Task)單執行緒處理大量連線,高擴展性生產級伺服器、高併發場景

兩大基本操作代碼範例

伺服端監聽(同步)

var listener = new TcpListener(IPAddress.Any, 8888);
listener.Start();
while (true) {
    using (var client = listener.AcceptTcpClient())
    using (var stream = client.GetStream()) {
        // 讀寫 stream
    }
}

客戶端連接(同步)

using (var client = new TcpClient("127.0.0.1", 8888))
using (var stream = client.GetStream()) {
    // 發送/接收資料
}

進階提示

  • 生產環境請使用 async/await 搭配 NetworkStream.ReadAsync/WriteAsync。
  • 務必處理 SocketException、ObjectDisposedException 等異常。
  • 心跳機制、封包黏包/拆包(長度前綴/分隔符)是實戰必修課。
copyright © 萬盛學電腦網 all rights reserved