Loading

还在手撸TCP/UDP/COM通信?一个仅16K的库搞定!

摘要

在一些项目中,可能会用到串口(COM)通信,也可能会使用TCP-Server,TCP-Client,UDP等等,这种实现起来都大差不差,所以我封装了一个无任何依赖小而美的通信框架,通用性强,安全稳定,动态库仅16KB。目前支持UPD/COM/TCP-Server/TCP-Client,UDP支持收发分离,连接状态回调等等。

image-20221119225500620image-20221119232550625

组件安装

Package命令行安装:

Install-Package BaseConnect -Version 1.0.0

可视化包管理工具:

Nuget搜索BaseConnect

image-20221119225754428

组件使用

小提示

Tips:因都继承自BaseConnect这个基类,所以无论我们需要创建哪种通信,都可以使用BaseConnect作为声明类型。

使用该类库创建一个通信仅有4步:new出一个对象(如TcpClient)传入构造参数--->注册数据接收回调--->注册连接状态变更回调--->打开连接

下面以Tcp-Client为例,简单说明一下使用方式

使用

1、为实例创建一个声明

private BaseConnect _connect = new NullConnect();

2、创建TcpClient实例,注册数据接收、连接状态回调事件,打开连接

//创建Tcp-Client
_connect = new TcpClientConnect(serverIp,serverPort);
_connect.ReceivedBytes += OnReceivedBytes;
_connect.ConnectStatusChanged += OnConnectStatusChanged;
_connect.OpenConnect();

//数据回调事件
private void OnReceivedBytes(string sender, byte[] data)
{
      //数据处理...
}

private void OnConnectStatusChanged(bool connected)
{
     //True:连接  False:断开
}

3、关闭连接,注销回调事件

if (_connect != null)
{
       _connect.CloseConnect();
       _connect.ReceivedBytes -= OnReceivedBytes;
       _connect.ConnectStatusChanged -= OnConnectStatusChanged;
}

搞定!就只需这么几步就能实现,COM以及UDP等等同理。唯一有变化的就是不同的通信在创建实例时传入的构造参数不一样。

实例构造参数说明

COM
参数 类型 是否必填 举例
comPortName(串口号) string 必填 COM1
comBaudRate(波特率) int 必填 115200
comParity(校验位) Parity 选填(默认为Parity.None) Parity.Odd
UDP
参数 类型 是否必填 举例
remoteIp(远端IP) string 必填 127.0.0.1
remotePort(远端端口) int 必填 9000
localPort(本机端口) int 选填(默认为0) 9005
TCP-Client
参数 类型 是否必填 举例
remoteIp(远端IP) string 必填 127.0.0.1
remotePort(远端端口) int 必填 9000
localPort(本机端口) int 选填(默认为0) 9005
TCP-Server
参数 类型 是否必填 举例
localPort(本机端口) int 必填 8888

效果演示

以下为使用该库所实现的通信模块,右侧为NetAssist工具模拟通信

1

如有不懂或更好的方式请在留言区留下评论!!

posted @ 2022-11-19 23:25  傲慢与偏见luc  阅读(494)  评论(2编辑  收藏  举报