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

C# 多執行緒即時通訊實作(2):伺服器端架構與 Client 類別設計

     編輯:關於C語言

伺服器啟動與監聽執行緒

// 建立 TCP 監聽器
IPEndPoint endPoint = new IPEndPoint(ipaAddress, iPort);
listener = new TcpListener(endPoint);
listener.Start();

// 建立專責監聽執行緒
thrListenForClients = new Thread(new ThreadStart(ListenForClients));
thrListenForClients.Start();

非同步接受客戶端連線

Client acceptClient = new Client();
acceptClient.Socket = listener.AcceptTcpClient();

listenForMessageDelegate = new ListenForMessageDelegate(ListenForMessages);
listenForMessageDelegate.BeginInvoke(acceptClient, new AsyncCallback(ListenForMessagesCallback), "Completed");

使用委派 `BeginInvoke` 實現非同步處理每個客戶端的訊息迴圈,避免封鎖主監聽迴圈。

Client 類別封裝

public class Client
{
    string strName;
    TcpClient tcpClient;

    public string Name
    {
        get { return strName; }
        set { this.strName = value; }
    }

    public TcpClient Socket
    {
        get { return tcpClient; }
        set { this.tcpClient = value; }
    }

    public void SendMessage(Message sendMessage)
    {
        NetworkStream stream = tcpClient.GetStream();
        stream.Write(sendMessage.GetRawMessage(), 0, sendMessage.GetRawMessage().Length);
    }
}

封裝 `TcpClient` 並提供 `SendMessage` 方法,統一訊息發送邏輯。

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