• 还在手撸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

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

  • 相关阅读:
    Leetcode6238-统计构造好字符串的方案数
    I2C总线 | I2C总线介绍
    检测登革热NS1蛋白分子/银纳米颗粒/金纳米颗粒/铂纳米颗粒修饰二氧化硅微球
    java常量命名规则简介说明
    蓝牙数据包协议解析
    卷?中学生开始学习人工智能和大模型,附课件!
    Cobalt Strike(二)使用重定器
    如何写出好代码 - 防御式编程
    【手把手教你】将python程序打包成exe可执行文件
    TYPE-C HUB(拓展坞)乐得瑞LDR6023A快充方案介绍
  • 原文地址:https://www.cnblogs.com/chonglu/p/16907536.html