程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> networkComms 通信框架之 消息處理器,networkcomms框架

networkComms 通信框架之 消息處理器,networkcomms框架

編輯:C#入門知識

networkComms 通信框架之 消息處理器,networkcomms框架


經常做Tcp通信的朋友知道,客戶端發送數據到服務器 或者 服務器發送消息到客戶端,接收端都要有相對應的處理器來對消息進行處理。

 

這裡有兩個概念 需要進行區別  

  消息類型  

  實際的數據類型  這裡指的是未被序列化之前的類的類型

舉個例子

 客戶端發送 消息A  消息B    這2個消息可能有相同的數據類型 但消息類型是不一樣的

上面的那個圖,進一步引申一下,可能如下圖:

 

比如 上圖中的消息A  數據類類型為ClassA  服務器端收到後,通信框架負責解析出ClassA類型的數據  

使用networkcomms框架時,在發送方每發送一個消息,都需要指定消息類型,在接收方都要針對消息類型定義一個處理器。

 

接收端接收消息時,根據消息類型選擇不同的處理器進行處理.

//下面代碼中的 "ReqMsg1","ReqMsg2","ReqMsg3"都是發送的消息類型

如果有返回消息,如下面的代碼中,還需要指定返回的消息類型“ResMsg1","ResMsg2","RewMsg3"

 string resMsg = connection.SendReceiveObject<string>("ReqMsg1", "ResMsg1", 5000, listBox1.Text);

 string resMsg = connection.SendReceiveObject<string>("ReqMsg2", "ResMsg2", 5000, listBox2.Text);

 string resMsg = connection.SendReceiveObject<string>("ReqMsg3", "ResMsg3", 5000, listBox3.Text);

上面的代碼中,定義發送3個消息,這3個消息都是string 類型

那麼接收端就需要根據消息類型,寫3個對應的處理器

<1>把3個處理器與通信框架進行對接

 NetworkComms.AppendGlobalIncomingPacketHandler<string>("ReqMsg1", IncomingMsg1Handle);

 NetworkComms.AppendGlobalIncomingPacketHandler<string>("ReqMsg2", IncomingMsg2Handle);

 NetworkComms.AppendGlobalIncomingPacketHandler<string>("ReqMsg3", IncomingMsg3Handle);

<2>

   private void IncomingMsg1Handle(PacketHeader header, Connection connection, string msg)
        {
            try
            {
                string resMsg = ""; 
               //具體操作
                connection.SendObject("ResMsg2", resMsg);
            }
            catch (Exception ex)
            {
               
            }
        }
   private void IncomingMsg2Handle(PacketHeader header, Connection connection, string msg)
        {
            try
            {
                string resMsg = ""; 
               //具體操作
                connection.SendObject("ResMsg2", resMsg);
            }
            catch (Exception ex)
            {
               
            }
        }
   private void IncomingMsg3Handle(PacketHeader header, Connection connection, string msg)
        {
            try
            {
                string resMsg = ""; 
               //具體操作
                connection.SendObject("ResMsg3", resMsg);
            }
            catch (Exception ex)
            {
               
            }
        }

 

www.networkComms.cn編輯

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved