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

科技网编2023-04-06 16:142370

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

组件安装

Package命令行安装:

Install-Package BaseConnect -Version 1.0.0

可视化包管理工具:

Nuget搜索BaseConnect

组件使用

小提示

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工具模拟通信

源代码

已将源代码编译发布至Nuget包管理平台,可直接在项目中安装使用,如需进行定制化修改,可联系本人获取完整源代码。

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

评论区