介绍开源的.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通信框架 作者是英国人 以前是收费的 目前作者已经开源 许可是 ...
随机推荐
- Scrum Meeting---Seven(2015-11-2)
今日已完成任务和明日要做的任务 姓名 今日已完成任务 今日时间 明日计划完成任务 估计用时 董元财 完成了服务器实现 5h 服务器与客户端连接测试 4h 胡亚坤 客户端与服务器端的通信 2h 客户端与 ...
- 动态CSS--less
忙了很久终于有时间来写点东西了,不知道大家有没有发现,我们在写CSS的时候总是在重复很多代码,一个相同的属性值往往要重复N次,以前我就经常想有没有什么办法能让我们不用一直重复的font-size啊co ...
- opencv 61篇
(一)--安装配置.第一个程序 标签: imagebuildincludeinputpathcmd 2011-10-21 16:16 41132人阅读 评论(50) 收藏 举报 分类: OpenCV ...
- ABAP 没有地方输入\H 进入DEBUG 怎么办?
把如下代码保存,命名debug.txt ,把这个文件拖拉到要调试的窗口. [FUNCTION]Command=/HTitle=Barry TestType=SystemCommand
- bootstrap 手风琴效果
<!DOCTYPE HTML> <html><head><meta charset="utf-8"><title>按钮插 ...
- Python学习(9)列表
目录 Python 列表 访问列表中的值 更新列表 删除列表元素 列表脚本操作符 列表截取 列表函数&方法 Python 列表(List) 序列是Python中最基本的数据结构.序列中的每个元 ...
- (四)C语言柔性数组、指针赋值
一.柔性数组 今天看了公司的代码,发现一个很奇怪的问题,后来自己写了类似代码,我先把代码贴出来吧. #include<stdio.h> #include<string.h> # ...
- Android控件_使用TextView实现跑马灯效果
一.第一种方式: 通过TextView控件的自身属性实现(但是有缺点就是当多个TextView要实现这种效果的时候,只有第一个才有效果) 实现方法加上下面四个属性: android:singleLi ...
- [转]Oracle中INITRANS和MAXTRANS参数
每个块都有一个块首部.这个块首部中有一个事务表.事务表中会建立一些条目来描述哪些事务将块上的哪些行/元素锁定.这个事务表的初始大小由对象的INITRANS 设置指定.对于表,这个值默认为2(索引的IN ...
- hiho_1051_补提交卡
题目大意 给出1到100这100个数中的某些数字(各个数字不同),这些数字形成一个个间断的连续区间,向1-100中添加M个数字,使得添加后1-100中某连续区间的长度最大,求出添加M个数字后,最长的连 ...