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. 自定义表单input

    我想实现下面这个效果?应该怎么写最方便呢?最有效,兼容性最好呢 我使用<p>标签套lable,加input的组合,p标签绝对定位,input标签铺满,用padding填充. 主要css . ...

  2. 【转】移动端input输入placeholder垂直不居中

    在移动端编写input输入框时候,为了输入文字与输入框垂直居中,一般情况下,会将input的line-height的高度等于height.但在移动端输入的时候会发现,虽然输入内容确实是垂直居中了,但是 ...

  3. Java中的线程池

    package com.cn.gbx; import java.util.Date; import java.util.Random; import java.util.Timer; import j ...

  4. SAP接口编程 之 JCo3.0系列(04) : 会话管理

    在SAP接口编程之 NCo3.0系列(06) : 会话管理 这篇文章中,对会话管理的相关知识点已经说得很详细了,请参考.现在用JCo3.0来实现. 1. JCoContext 如果SAP中多个函数需要 ...

  5. Hibernate各种主键生成策略与配置详解《转》

    1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主 ...

  6. 简单的php性能注意点

    什么情况,可能遇到性能问题: 1.php语法使用的不恰当 2.使用php语言做了它不擅长做的事 3.用php语言连接的服务不给力 4.php自身的短板 5.我也不知道的问题 一般情况:php性能问题不 ...

  7. Python学习(12)日期和时间

    目录 Python 日期和时间 时间元组 获取当前时间 获取格式化时间 格式化日历 获取某月日历 Time模块 日历模块 其他相关模块和函数 Python 日期和时间 Python 程序能用很多方式处 ...

  8. android 自定义进度条颜色

    android 自定义进度条颜色 先看图 基于产品经理各种自定义需求,经过查阅了解,下面是自己对Android自定义进度条的学习过程!   这个没法了只能看源码了,还好下载了源码, sources\b ...

  9. eclipse如何调试(Debug)程序(zhuan)

    http://jingyan.baidu.com/article/e6c8503c7e46b6e54f1a18c5.html ************************************* ...

  10. TortoiseSVN文档

    https://tortoisesvn.net/docs/release/TortoiseSVN_zh_CN/index.html TortoiseSVN 针对 Windows 平台的 Subvers ...