介绍开源的.net通信框架NetworkComms
Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地址是:https://github.com/MarcFletcher/NetworkComms.Net
networkcomms通讯框架使用简单方便,性能稳定.
从github上下载到源码后,需要Visual studio安装nuget 加载相关DLL.
用VS打开解决方案后,删除上图中暂时用不到的项目,然后进行编译
networkcomms默认使用protobuf进行数据的序列化.
下面通过一个简单的例子,使用NetworkComms框架,进行简单的客户端与服务器的通信。
1、新建2个WinForm的项目
第一步,是 添加引用,引用2个项目 ,一个是networkcomms通信框架 一个是ProtobufSerializer 。NetworkComms是通信框架,ProtobufSerializer是序列化用的
监听代码:
//IP地址和端口 IPEndPoint thePoint = new IPEndPoint(IPAddress.Parse(txtIP.Text), int.Parse(txtPort.Text)); //开始监听此IP和端口 使用TCP协议 Connection.StartListening(ConnectionType.TCP, thePoint);
客户端连接服务器代码:
//连接信息 connInfo = new ConnectionInfo(txtIP.Text, int.Parse(txtPort.Text)); //连接服务器 newTcpConnection = TCPConnection.GetConnection(connInfo);
通过上面的几步,客户端就同服务器端取得了联系,NetowrkComms通信框架会自动发送心跳包,保持客户端与服务器端之间的TCP连接.
那么,服务器端与客户端如何通信呢
比如,客户端发起一个请求,服务器端回复一个请求。这就涉及到一个消息类型的概念。
使用networkcomms 通信框架时,客户端发送消息给服务器端是,需要制定当前消息的消息类型,和期待返回的消息类型。服务器端返回消息时,指定客户端期待返回的消息类型。
这样客户端就能获取到响应的返回消息。
示例: 客户端从服务器获取响应的英文名称
客户端代码:
, listBox1.Text); MessageBox.Show("英文名称是:" + resMsg);
GetName 是请求的消息类型 ResName 是期待的返回的消息类型
在服务器端 我们编写代码时,处理 GetName类型的消息时,返回消息类型设定为ResName 即可
如下:
服务器端代码:
private void button1_Click(object sender, EventArgs e) { //IP地址和端口 IPEndPoint thePoint = new IPEndPoint(IPAddress.Parse(txtIP.Text), int.Parse(txtPort.Text)); //开始监听此IP和端口 使用TCP协议 Connection.StartListening(ConnectionType.TCP, thePoint); //关联消息类型为GetName的消息的处理方法 NetworkComms.AppendGlobalIncomingPacketHandler<string>("GetName", IncomingMsgHandle); button1.Text = "已经开始监听"; } private void IncomingMsgHandle(PacketHeader header, Connection connection, string msg) { try { string resMsg = ""; if (msg == "星期一") resMsg = "Monday"; else if (msg == "星期二") resMsg = "Tuesday"; else if (msg == "星期三") resMsg = "Wednesday"; else if (msg == "星期四") resMsg = "Thursday"; else if (msg == "星期五") resMsg = "Friday"; else if (msg == "星期六") resMsg = "Saturday"; else if (msg == "星期日") resMsg = "Sunday"; connection.SendObject("ResName", resMsg); } catch (Exception ex) { } }
示例 源码地址
介绍开源的.net通信框架NetworkComms的更多相关文章
- 介绍开源的.net通信框架NetworkComms框架 源码分析
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 售价249英镑 我曾经花了 ...
- 介绍开源的.net通信框架NetworkComms框架之二 传递类
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(二)ConnectionInfo
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架之四 消息边界
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架之三 传递List
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 开源地 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(二十三 )TCPConnection
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(二十二 )TCPConnectionStatic
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(二十一 )TCPConnectionListener
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(二十 )ConnectionCreate
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
- 介绍开源的.net通信框架NetworkComms框架 源码分析(十九 )ConnectionIncomingData
原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
随机推荐
- hd1496---->这道题是水水的数论吗?
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1496 题意: Consider equations having the following form: ...
- 《FLASH CC 2015 CANVAS 中文教程》——1、导出canvas动画,文件结构浅析
注::如果你对 FLASH 这个软件操作不够熟悉,建议你可以先看看FLASH动画之类的书. :FLASH CC 在文中直接简称为CC. :以下所以文章中所说的快捷键 如果你按了不起作用,请检查是否有其 ...
- 编写spring配置文件时,不能出现帮助信息
由于spring的schema文件位于网络上,如果机器不能连接到网络,那么在编写配置信息时候就无法出现提示信息,解决方法有两种: 1.让机器上网,eclipse会自动从网络上下载schema文件并缓存 ...
- iOS - Swift available 平台判断
前言 Swift 语言中的 @available 和 #available,Swift 2.0 中,引入了可用性的概念.对于函数,类,协议等,可以使用 @available 声明这些类型的生命周期依赖 ...
- 播放列表文件用于HTTP实时流的使用
广告播放清单(Discontinuities): 通常你会想要提供一系列的电影,在每个电影前面显示一些品牌(广告),让用户知道这些电影来自你的特定网站.一种方法是简单地将广告与每部电影合并.但是如果你 ...
- SQL server数据类型、增删改查
数据类型: 整数型:bigint.int.smallint.mediumint.tinyint 小数类型:decimal.numeric 浮点型:real.float.double 位型:bit 字符 ...
- 【linux 命令】:查看系统开机,关机时间【转载】
转载原文:http://www.cnblogs.com/kerrycode/p/3759395.html 看Linux开机关机时间的方法(非常全面) 1: who 命令查看 who -b 查看最后一次 ...
- SwitchCompat 修改颜色
Ok, so I'm sorry but most of these answers are incomplete or have some minor bug in them. The very c ...
- 韩系高端PK:whoo后VS雪花秀(转载)
产品广告代言人是李英爱(韩剧“大长今”的扮演者)产品设计也是贵妇风格.------------//就是大长今的女主角用过的牌子 LG旗下的WHOO后 WHOO后洁面霜:这是我非常喜欢的洁面霜,淡黄色 ...
- 【转】使用Web墨卡托辅助球体切片方案的地图公共属性
原文链接:https://doc.arcgis.com/en/data-appliance/6.1/reference/common-attributes.htm 使用Web墨卡托辅助球体切片方案的地 ...