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编辑
---------------------
作者:networkcomms
来源:CSDN
原文:https://blog.csdn.net/networkcomms/article/details/44218217
版权声明:本文为博主原创文章,转载请附上博文链接!
networkComms 通信框架之 消息处理器的更多相关文章
- 介绍开源的.net通信框架NetworkComms框架之四 消息边界
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(三)PacketHeader
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- c#网络通信框架networkcomms内核解析之三 消息同步调用
networkcomms.net 来自英国的网络通信框架 官方网址 www.networkcomms.net 中文网址www.networkcomms.cn 客户端发送消息给服务器,服务器计算结果返回 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(五)ReservedPacketType
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架之五 心跳检测
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架之七 数据加密通信
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms
Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地址是:https://github.com/MarcFletcher/ ...
- c#网络通信框架networkcomms内核解析之一 消息传送
networkcomms.net 来自英国的网络通信框架 官方网址 www.networkcomms.net 中文网址www.networkcomms.cn 在网络通信程序中,本地的类或者对象,要传输 ...
- c#网络通信框架networkcomms内核解析之一 消息传送2
networkcomms.net 来自英国的网络通信框架 官方网址 www.networkcomms.net 中文网址www.networkcomms.cn 在网络通信程序中,本地的类或者对象,要传输 ...
随机推荐
- SQL 交叉连接与内连接
交叉连接 ,没有任何限制方式的连接. 叫做交叉连接. 碰到一种SQL 的写法. select * from t1,t2 . 这其实是交叉连接 . t1 是三条 , t2 是两条. ...
- Red Gate .NET Reflector
Debug and decompile inside Visual Studio (VSPro edition) Use the Visual Studio debugger Use your reg ...
- 安装第三方包&查看python版本/第三方包版本
安装第三方包时,经常需要查看python版本,以及是否安装第三方包及版本,每次都要百度下指令. 故小编整理了下安装/卸载第三方包,查看python/第三包的指令,具体如下: 一.python安装/卸载 ...
- C# .NET 和.NET Framework区别
一,C#简介 1>C#是一种面向对象的.运行于.NET Framework之上的高级程序设计语言. 2>C# 是一种简洁.类型安全的面向对象的语言,开发人员可以使用它来构建在 .NET F ...
- config maven in intellij IDEA
Config maven in IDEA File ->Settings->Build,Execution.Deployment->build Too ...
- Java数组遍历
1.数组声明格式: 数据类型 [] 数组名 = new 数据类型[长度]: 数组长度一旦确定无法更改. 数组里的数据必须是相同类型或自动向上转型后兼容的类型 2.数组遍历 //一维数组 String ...
- 小程序中使用async函数 会报 regeneratorRuntime is not defined的问题
async await比Promise更好的解决异步操作问题,但是在小程序中直接使用会出现以下的错误提示 是因为缺少了regeneratorRuntime这个模块,需要从外部引入 1.在新建的文件夹中 ...
- 【异常】Caused by: java.lang.IllegalStateException: Method has too many Body parameters
出现此异常原因是引文使用feign客户端的时候,参数没有用注解修饰 1.1GET方式错误写法 @RequestMapping(value="/test", method=Reque ...
- Dev常用控件
GridControl TreeView DEV GridControl小结.. https://blog.csdn.net/happy09li/article/details/7186829 Dev ...
- 2019牛客暑期多校训练营(第六场)C E H G
C Palindrome Mouse E Androgynos 参考https://blog.csdn.net/birdmanqin/article/details/98479219这位大佬的.构造题 ...