经常做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 通信框架之 消息处理器相关推荐

  1. 介绍开源的.net通信框架NetworkComms

    Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  开源地址是:https://github.com/MarcFletcher/ ...

  2. ESFramework网络通信框架介绍之(3)――消息处理器和处理器工厂

    一.ESFramework网络通信框架与消息处理器 无论是服务端还是客户端,都需要对接收到的消息进行处理,在ESFramework网络通信框架中,处理消息的组件称为消息处理器,所有的消息处理器都实现了 ...

  3. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答...

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  4. java 进程通信框架,MediatR-进程内的消息通信框架

    MediatR是一款进程内的消息订阅.发布框架,提供了Send方法用于发布到单个处理程序.Publish方法发布到多个处理程序,使用起来非常方便.目前支持 .NET Framework4.5..NET ...

  5. 网络通信应用开发利器!—— ESPlus —— ESFramework通信框架的增强库

    概述 ESPlus 是基于网络通信框架ESFramework通信框架通信框架的增强库.为了更贴近实际应用,加快网络通信系统的开发,ESPlus在ESFramework通信框架原生功能的基础上,进行了再 ...

  6. ESFramework 可复用的通信框架(序)

    自从2004年7月开始,就一直从事N层C/S结构的服务端的开发,从最初的熟悉各种Windows Socket API.熟悉完成端口模型,探索高效稳定的服务端通信模型,时至今日,慢慢的积累了一些C/S服 ...

  7. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-代码解析...

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍一文之中我们对AgileEAS.NET S ...

  8. 蚂蚁金服通信框架SOFABolt解析 | 协议框架解析

    2019新春支付宝红包技术大揭秘在线峰会将于03-07日开始,点击这里报名届时即可参与大牛互动. SOFA Scalable Open Financial Architecture 是蚂蚁金服自主研发 ...

  9. 【EventBus】事件通信框架 ( 总结 | 手写事件通信框架完整代码示例 | 测试上述框架 )

    文章目录 一.消息中心 二.订阅方法时的注解 三.订阅方法封装 四.订阅对象-方法封装 五.线程模式 六.Activity 中测试上述框架 七.博客源码 一.消息中心 该消息中心是事件通信框架的核心代 ...

  10. Netty通信框架Java实现小记

    1.Netty介绍    Netty通俗地说就是一套Socket通信框架,提供异步的.事件驱动的网络应用程序框架和工具,可快速开发高性能.高可靠性的网络服务器和客户端程序 2.Netty的特性     ...

最新文章

  1. tomcat启动一直报空指针错误
  2. PHP中如何给日期加上一个月 加一周 加一天
  3. 右键删除选中的行总提示rowIndex
  4. Linux 下如何处理包含空格和特殊字符的文件名
  5. Account group 0170 reserved for consumers
  6. 多媒体计算机属于哪种教学,多媒体计算机属于哪种教学媒体(???)。
  7. java RSA 加签验签【转】
  8. sql 查询上个月的数据_数据分析-SQL 进阶篇 多表查询
  9. Android四大组件---Activity
  10. 简明python教程怎么买-简明python教程在哪买!《简明python教程》 下载地址?
  11. TCP/IP and Socket
  12. c语言程序设计万年历的显示,C语言程序设计万年历
  13. 如何设置DiffMerge不进行Class文件的比较
  14. 计算机桌面背景不见,电脑桌面背景不见了
  15. PMP——项目管理介绍
  16. 使用VS编写C语言程序遇到的scanf错误
  17. 人工智能之自动驾驶系列(一):概要
  18. Qt QPlainTextEdit和QTextEdit区别
  19. 消防车登高平台液压缸设计(设计说明书+CAD装配图、零件图、液压原理图)
  20. Android 按两次返回键、长按返回键退出程序

热门文章

  1. 拓端tecdat|R语言关联规则模型(Apriori算法)挖掘杂货店的交易数据与交互可视化
  2. 拓端tecdat|R语言广义相加模型 (GAMs)分析预测CO2时间序列数据
  3. struts教程笔记4
  4. ubuntu16.04命令行模式和图形界面互相切换
  5. Caffe各版本与源码全透析
  6. 基于移动最小二乘的图像变形
  7. caffe 官方例程之R-CNN(物体检测)
  8. pybaobabdt 推荐一款超高颜值的模型可视化库
  9. Python 基础数据类型
  10. Ubuntu16.04 Jupyter安装(Ipython Notebook安装)