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的更多相关文章

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

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 售价249英镑 我曾经花了 ...

  2. 介绍开源的.net通信框架NetworkComms框架之二 传递类

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  开源地 ...

  3. 介绍开源的.net通信框架NetworkComms框架 源码分析(二)ConnectionInfo

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  4. 介绍开源的.net通信框架NetworkComms框架之四 消息边界

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  5. 介绍开源的.net通信框架NetworkComms框架之三 传递List

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  开源地 ...

  6. 介绍开源的.net通信框架NetworkComms框架 源码分析(二十三 )TCPConnection

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  7. 介绍开源的.net通信框架NetworkComms框架 源码分析(二十二 )TCPConnectionStatic

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  8. 介绍开源的.net通信框架NetworkComms框架 源码分析(二十一 )TCPConnectionListener

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  9. 介绍开源的.net通信框架NetworkComms框架 源码分析(二十 )ConnectionCreate

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  10. 介绍开源的.net通信框架NetworkComms框架 源码分析(十九 )ConnectionIncomingData

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

随机推荐

  1. git学习笔记10-新开发的功能不想要了-强行删除分支

    添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支. 现在,你终于接 ...

  2. jQuery里面的普通绑定事件和on委托事件

    以click事件为例: 普通绑定事件:$('.btn1').click(function(){}绑定 on绑定事件:$(document).on('click','.btn2',function(){ ...

  3. ACCESS 数据库使用配置调整解决方案

    分享到 一键分享 QQ空间 新浪微博 百度搜藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 64位服务器无法使用ac ...

  4. HDU 1754

    成段更新 easy #include <stdio.h> #include <string.h> #include <math.h> #include <io ...

  5. [转载] 数据库分析手记 —— InnoDB锁机制分析

    作者:倪煜 InnoDB锁机制常常困扰大家,不同的条件下往往表现出不同的锁竞争,在实际工作中经常要分析各种锁超时.死锁的问题.本文通过不同条件下的实验,利用InnoDB系统给出的各种信息,分析了锁的工 ...

  6. Xpert 基础

    ----------------------- 01 ------------------------------- declare cursor emp_cur is select empname ...

  7. poj3384Feng Shui(半平面交)

    链接 将边长向内推进r,明显这样把第一个圆的圆心放在新的边长是肯定是最优的,与原本边相切,然后再找新多边上的最远的两点即为两圆心. #include <iostream> #include ...

  8. 使用phpmaill发送邮件的例子

    首先,要下载php_mail软件包 核心代码: index.php <?php include "mail.php"; if (!empty($_POST['to']) &a ...

  9. VIM跳到指定行

    ngg nG :n n is the line number

  10. intersection-of-two-arrays-ii

    https://leetcode.com/problems/intersection-of-two-arrays-ii/ class Solution { public: vector<int& ...