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

C# 多執行緒即時通訊實作(1):通訊協定與訊息結構設計

     編輯:關於C語言

專案目標

實作類似 Yahoo/MSN 的多執行緒 Client/Server 即時通訊應用,基於 TCP 連線,支援個人訊息、會議模式、客戶端清單同步等功能。

即時通訊軟體介面截圖

核心類別庫:ChatLibrary

定義命令列舉與訊息結構,採用管線符號 `|` 分隔欄位的文字協定:

命令類型

public enum Command
{
    Login = 0,
    PersonalMessage = 1,
    ClientList = 2,
    Conference = 3,
    Logout = 4
}

Message 類別完整實作

public class Message
{
    string strSender;
    string strReceiver;
    Command cmdMessageCommand;
    string strMessageDetail;

    public Message() { }

    // 從原始位元組陣列解析
    public Message(byte[] rawMessage)
    {
        string strRawStringMessage = System.Text.Encoding.ASCII.GetString(rawMessage);
        string[] strRawStringMessageArray = strRawStringMessage.Split(new char[] { '|' });
        
        this.strSender = strRawStringMessageArray[1];
        this.strReceiver = strRawStringMessageArray[2];
        this.cmdMessageCommand = (Command)Convert.ToInt32(strRawStringMessageArray[3]);
        this.MessageDetail = strRawStringMessageArray[4];
    }

    // 序列化為位元組陣列傳輸
    public byte[] GetRawMessage()
    {
        System.Text.StringBuilder sbMessage = new System.Text.StringBuilder("John"); // 協定標識
        sbMessage.Append("|");
        sbMessage.Append(strSender);
        sbMessage.Append("|");
        sbMessage.Append(strReceiver);
        sbMessage.Append("|");
        sbMessage.Append((int)cmdMessageCommand);
        sbMessage.Append("|");
        sbMessage.Append(strMessageDetail);
        sbMessage.Append("|");
        return System.Text.Encoding.ASCII.GetBytes(sbMessage.ToString());
    }
    // ... 屬性存取器略
}

協定格式說明

傳輸格式:`John|發送者|接收者|命令代碼|訊息內容|`

  • 固定開頭 `John` 作為協定識別碼
  • ASCII 編碼確保跨平台相容性
  • 簡單文字協定易於除錯與擴展
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved