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

C# Socket 程式設計筆記(二):TCP 伺服器實作

     編輯:關於C語言

繼續 Socket 系列,本篇實作 TCP 伺服器:綁定端點、監聽、接受連線、迴圈收發資料。附帶無連線套接字時序圖輔助理解。

無連線套接字系統調用時序

TCP Server 核心程式碼

Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Bind(new IPEndPoint(IPAddress.Any, 9050));
server.Listen(10);
Console.WriteLine("waiting for a client");
Socket client = server.Accept();
IPEndPoint clientIp = (IPEndPoint)client.RemoteEndPoint;
Console.WriteLine($"connect with client: {clientIp.Address}:{clientIp.Port}");
client.Send(Encoding.ASCII.GetBytes("welcome here!"));
byte[] data = new byte[1024];
while (true) {
    data = new byte[1024];
    int recv = client.Receive(data);
    if (recv == 0) break; // 客戶端斷開
    Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
    client.Send(data, recv, SocketFlags.None); // 回應
}
client.Close(); server.Close();

注意:Accept 回傳新 Socket 專責該客戶端通訊,主 Socket 可繼續監聽新連線。實務上通常啟動新執行緒或使用非同步模式處理多客戶端。

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