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
版权声明:本文为博主原创文章,转载请附上博文链接!
转载于:https://www.cnblogs.com/Jeely/p/10972218.html
networkComms 通信框架之 消息处理器相关推荐
- 介绍开源的.net通信框架NetworkComms
Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地址是:https://github.com/MarcFletcher/ ...
- ESFramework网络通信框架介绍之(3)――消息处理器和处理器工厂
一.ESFramework网络通信框架与消息处理器 无论是服务端还是客户端,都需要对接收到的消息进行处理,在ESFramework网络通信框架中,处理消息的组件称为消息处理器,所有的消息处理器都实现了 ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答...
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- java 进程通信框架,MediatR-进程内的消息通信框架
MediatR是一款进程内的消息订阅.发布框架,提供了Send方法用于发布到单个处理程序.Publish方法发布到多个处理程序,使用起来非常方便.目前支持 .NET Framework4.5..NET ...
- 网络通信应用开发利器!—— ESPlus —— ESFramework通信框架的增强库
概述 ESPlus 是基于网络通信框架ESFramework通信框架通信框架的增强库.为了更贴近实际应用,加快网络通信系统的开发,ESPlus在ESFramework通信框架原生功能的基础上,进行了再 ...
- ESFramework 可复用的通信框架(序)
自从2004年7月开始,就一直从事N层C/S结构的服务端的开发,从最初的熟悉各种Windows Socket API.熟悉完成端口模型,探索高效稳定的服务端通信模型,时至今日,慢慢的积累了一些C/S服 ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-代码解析...
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍一文之中我们对AgileEAS.NET S ...
- 蚂蚁金服通信框架SOFABolt解析 | 协议框架解析
2019新春支付宝红包技术大揭秘在线峰会将于03-07日开始,点击这里报名届时即可参与大牛互动. SOFA Scalable Open Financial Architecture 是蚂蚁金服自主研发 ...
- 【EventBus】事件通信框架 ( 总结 | 手写事件通信框架完整代码示例 | 测试上述框架 )
文章目录 一.消息中心 二.订阅方法时的注解 三.订阅方法封装 四.订阅对象-方法封装 五.线程模式 六.Activity 中测试上述框架 七.博客源码 一.消息中心 该消息中心是事件通信框架的核心代 ...
- Netty通信框架Java实现小记
1.Netty介绍 Netty通俗地说就是一套Socket通信框架,提供异步的.事件驱动的网络应用程序框架和工具,可快速开发高性能.高可靠性的网络服务器和客户端程序 2.Netty的特性 ...
最新文章
- tomcat启动一直报空指针错误
- PHP中如何给日期加上一个月 加一周 加一天
- 右键删除选中的行总提示rowIndex
- Linux 下如何处理包含空格和特殊字符的文件名
- Account group 0170 reserved for consumers
- 多媒体计算机属于哪种教学,多媒体计算机属于哪种教学媒体(???)。
- java RSA 加签验签【转】
- sql 查询上个月的数据_数据分析-SQL 进阶篇 多表查询
- Android四大组件---Activity
- 简明python教程怎么买-简明python教程在哪买!《简明python教程》 下载地址?
- TCP/IP and Socket
- c语言程序设计万年历的显示,C语言程序设计万年历
- 如何设置DiffMerge不进行Class文件的比较
- 计算机桌面背景不见,电脑桌面背景不见了
- PMP——项目管理介绍
- 使用VS编写C语言程序遇到的scanf错误
- 人工智能之自动驾驶系列(一):概要
- Qt QPlainTextEdit和QTextEdit区别
- 消防车登高平台液压缸设计(设计说明书+CAD装配图、零件图、液压原理图)
- Android 按两次返回键、长按返回键退出程序
热门文章
- 拓端tecdat|R语言关联规则模型(Apriori算法)挖掘杂货店的交易数据与交互可视化
- 拓端tecdat|R语言广义相加模型 (GAMs)分析预测CO2时间序列数据
- struts教程笔记4
- ubuntu16.04命令行模式和图形界面互相切换
- Caffe各版本与源码全透析
- 基于移动最小二乘的图像变形
- caffe 官方例程之R-CNN(物体检测)
- pybaobabdt 推荐一款超高颜值的模型可视化库
- Python 基础数据类型
- Ubuntu16.04 Jupyter安装(Ipython Notebook安装)