程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c#c+-只有5個客戶端的c#的網絡編程

c#c+-只有5個客戶端的c#的網絡編程

編輯:編程解疑
只有5個客戶端的c#的網絡編程

我要做一個只有5個客戶端的網絡編程軟件,客戶端用c#,服務端用c++,我不知道用什麼網絡模型,尤其是客戶端在給服務端發不同的服務消息,服務端怎麼判斷並分類處理?要不要用線程啊,有不有完整的項目代碼,我是新手,不大會!

最佳回答:


        模型選擇:
        網絡模型的選擇需要衡量開發成本、項目的壓力、業務需求等,按照你說的只有5個客戶端,那麼即使跑視頻壓力也不大,所以更多要考慮的是業務需求和開發成本。
        看你的業務需求,5個客戶端是並行的還是串行的,一般來說,這種的業務都需並行的,那麼久考慮下業務處理時間了,每個業務需要處理的耗時是多少,這個決定是否可以用非阻塞。
        socket按照開發成本可大致分為 1多線程---》2回調---》3完成端口
        最簡單的就是直接跑跑多線程了,這種的開發周期最短,不過性能也最差,占用資源較多,第二種的是回調,這種開發較快,占用資源也比較少,基本能滿足你的需求。至於完成端口這東西性能最優,開發成本也最大,如果不是要秀技術,不推薦在這個項目上用。
        判斷分類處理:
        在socket通訊中,所有的操作都是根據報文標識來做對應操作的,不必糾結於怎麼判斷並分類處理,一般來說一條tcp的協議包含以下部分
        報頭 長度 命令關鍵字 主體內容 校驗 報尾
        根據具體的業務又可以增加或者刪減部分內容,這個報文是完全由你自己定義的,而在程序中的做法是:
        1、首先受到網絡數據的時候存入一個byte[]中,也就是socket緩沖區,收到數據最初是存在這裡的,我們的操作也是從這個緩沖區取數據進行處理。
        2、取出數據後使用報文解析器解析報文,報文解析器是一個自定義的所有用戶共用的類或方法,他的作用就是將byte[]轉為協議文本,然後判斷協議的完整性,(有時候會再判斷協議的准確性,也就是判斷校驗位)然後根據報文中的命令關鍵字去調用對應的處理方法。
        3、在處理方法中就可以對收到的協議數據做相應的處理了,業務基本是封裝在這部分的。
        這是最基本的一個報文處理過程,一般我們會根據項目情況做一些調整,調整的話上面的處理邏輯也不會更改,我比較經常用到的是命令模式和生產者消費者模式來處理報文。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved