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

C# 網路程式設計:非同步傳輸字串 (完) — 多客戶端測試與協議缺陷討論

     編輯:關於C語言

測試:同時啟動多個客戶端

在 SendMessage() 中連續發送三條相同訊息,純粹為測試非同步情境下的「訊息合併/拆分」現象。最後在 Main() 建立實例並呼叫測試:

class Client {
    static void Main(string[] args) {
        ConsoleKey key;
        ServerClient client = new ServerClient();
        client.SendMessage();

        Console.WriteLine("\n\n輸入 \"Q\" 鍵退出。");
        do {
            key = Console.ReadKey(true).Key;
        } while (key != ConsoleKey.Q);
    }
}

良好的程式碼重構讓邏輯在複雜度提升時仍保持清晰可讀。

程式測試結果

先啟動伺服器,再連續啟動兩個客戶端,觀察輸出:

伺服器端可同時服務多個客戶端;從接收位元組數可見,兩個客戶端各有兩個請求被合併成一條。因為我們定義了協議(長度前綴),伺服器能正確拆解。客戶端未做同樣處理,故收到回應時仍會發生合併——解決方式同理,此處不再贅述。

自訂協議的缺陷與改進方向

協議雖好用,但若客戶端惡意輸入 [length=xxx] 卻實際長度不符,程式會出錯。可選對策:對 [ 和 ] 進行轉義(如 \[、\]),讀取後再還原。

本範例到此結束。後續範例將持續採用非同步傳輸並加入更多協議內容,下一篇將介紹如何傳送/接收檔案。

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