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

C# 2.0 Socket 程式設計基礎:核心概念與關鍵類別詳解

     編輯:關於C語言

Socket 通訊原理概述

採用 C/S 模式為例:伺服器端在指定連接埠監聽,等待客戶端發起連線請求。連線建立後,雙方依約定的資料格式進行交換。Socket 僅產生一個描述符,後續仍需透過 bind、listen、accept 等呼叫填入完整資訊才能通訊。

TCP 伺服器端流程

  1. socket() 取得描述符
  2. bind() 綁定 IP 與連接埠
  3. listen() 設定等待佇列長度
  4. accept() 阻塞等待連線,成功時回傳新 Socket 描述符
  5. 常見做法:accept 回傳後建立新行程處理通訊,父行程繼續 accept

TCP 客戶端流程

  1. socket() 取得描述符
  2. connect() 向指定伺服器發起連線
  3. 連線成功後透過描述符讀寫資料

.NET Framework Socket 核心類別

System.Net.Sockets 命名空間提供以下重要類別:

  • Socket:底層連線管理,WebRequest、TcpClient、UdpClient 內部皆使用此類
  • NetworkStream:繼承自 Stream,表示網路資料流
  • TcpClient:建立與使用 TCP 連線
  • TcpListener:監聽傳入 TCP 連線請求
  • UdpClient:UDP 客戶端連線(主要用於區域網路)

Socket 建立與基本操作

建立 TCP Socket

Socket temp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

建立 UDP Socket

Socket temp = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

客戶端操作流程

  • Connect:連線至伺服器(未先 Bind 時系統自動指派 1024-5000 間的隨機連接埠)
  • Send:傳送資料
  • Receive:接收資料

伺服器端操作流程

  • Bind:綁定本地端點
  • Listen:開始監聽
  • Accept:接受連線並建立新 Socket 處理
  • Close:關閉 Socket

端點與 IP 位址處理

EndPoint 類別抽象表示網路資源,IP 位址族使用 IPEndPoint,結合主機 IP 與連接埠形成連線點。

取得 IPAddress 實例

IPAddress myIP = IPAddress.Parse("192.168.0.1");

同步與非同步模式

  • 同步模式:區塊傳輸,呼叫 Send/Receive 直到完成才回傳控制權,最常用
  • 非同步模式:位元傳輸,需指定開始與結束回呼

本系列範例皆採用同步模式示範。

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