国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

networkComms 通信框架之 消息處理器

2019-11-17 02:32:23
字體:
供稿:網(wǎng)友

networkComms 通信框架之 消息處理器

經(jīng)常做Tcp通信的朋友知道,客戶端發(fā)送數(shù)據(jù)到服務(wù)器 或者 服務(wù)器發(fā)送消息到客戶端,接收端都要有相對(duì)應(yīng)的處理器來對(duì)消息進(jìn)行處理。

這里有兩個(gè)概念 需要進(jìn)行區(qū)別

消息類型

實(shí)際的數(shù)據(jù)類型 這里指的是未被序列化之前的類的類型

舉個(gè)例子

客戶端發(fā)送 消息A 消息B 這2個(gè)消息可能有相同的數(shù)據(jù)類型 但消息類型是不一樣的

上面的那個(gè)圖,進(jìn)一步引申一下,可能如下圖:

比如 上圖中的消息A 數(shù)據(jù)類類型為ClassA 服務(wù)器端收到后,通信框架負(fù)責(zé)解析出ClassA類型的數(shù)據(jù)

使用networkcomms框架時(shí),在發(fā)送方每發(fā)送一個(gè)消息,都需要指定消息類型,在接收方都要針對(duì)消息類型定義一個(gè)處理器。

接收端接收消息時(shí),根據(jù)消息類型選擇不同的處理器進(jìn)行處理.

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

如果有返回消息,如下面的代碼中,還需要指定返回的消息類型“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);

上面的代碼中,定義發(fā)送3個(gè)消息,這3個(gè)消息都是string 類型

那么接收端就需要根據(jù)消息類型,寫3個(gè)對(duì)應(yīng)的處理器

<1>把3個(gè)處理器與通信框架進(jìn)行對(duì)接

 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編輯


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 辉南县| 综艺| 宁德市| 商河县| 邻水| 台东县| 金川县| 利津县| 毕节市| 宝山区| 随州市| 桃园市| 中牟县| 华池县| 晋州市| 崇文区| 罗江县| 英山县| 邳州市| 剑川县| 阜南县| 新建县| 长乐市| 太原市| 澄江县| 二连浩特市| 永平县| 新沂市| 资阳市| 尖扎县| 厦门市| 苏尼特左旗| 彝良县| 斗六市| 玉溪市| 鸡西市| 浦县| 汾西县| 郸城县| 桃源县| 兰州市|