首页 > 其他分享 >还在手撸TCP/UDP/COM通信?一个仅16K的库搞定!

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

时间:2022-11-19 23:46:43浏览次数:57  
标签:UDP 必填 16K int TCP connect COM

摘要

在一些项目中,可能会用到串口(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

源代码

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

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

标签:UDP,必填,16K,int,TCP,connect,COM
From: https://www.cnblogs.com/chonglu/p/16907536.html

相关文章

  • unix网络编程1.1——TCP协议详解(一)
    目录前言网络7层协议与4层协议TCP/IP四层模型通信过程TCP与UDP的区别:TCP:UDP:CS模型-TCP总览数据进入协议栈时的封装过程TCP数据格式TCP三次握手通信时序图TCP四次挥手半关......
  • TCP/IP面试必备
     数据流走向可以看成协议栈,后进先出 物理层提供比特流传输 RS232 RS449 RJ45 比如网卡数据链路层传输单位frame(帧)介质访问,链路管理网络层 寻址和路由选择pack......
  • 计算机网络原理(TCP/IP协议四):地址解析协议
    ARPARP缓存ARP帧格式ARP缓存超时代理ARP免费ARP和地址冲突检测与ARP相关的攻击关于地址解析协议在之前计算机网络原理(六):链路层与局域网的4.1中就有原理的介绍,......
  • 单机10万TCP连接测试记录
    目录前言准备工作安装DotNet6环境服务端代码客户端代码编译测试记录失败尝试1(Linux可用端口范围限制)解决Linux端口范围限制查看端口范围修改端口范围失败尝试2(可用端口......
  • ThreadingTCPServer实现简单的Tcp服务器
    通过ThreadingTCPServer实现一个简单的Tcp服务器#!/usr/bin/envpython#-*-encoding:utf-8-*-'''@File:tcp_server.py@Description:@Time:......
  • tcp和udp:发送和接收工具
    字符串转16进制字符串''' 主要使用到了binascii内置模块'''代码'''将字符串转为对应的16进制:params需要转换的内容:parambyteslens转换完后的长......
  • TCP 协议中socket、port和进程的对应关系
    转载自:https://blog.csdn.net/m0_51218245/article/details/120938107 ======================= 前言:最近再看计算机网络,作为一个菜鸡一开始对socket和port(端口)一直......
  • python基础入门之黏包、UDP代码、多道技术、进程
    python基础入门之黏包、UDP代码、多道技术、进程目录python基础入门之黏包、UDP代码、多道技术、进程黏包现象黏包的解决方案UDP基本代码使用并发编程理论之操作系统发展......
  • UDP协议和实战、并发编程理论、多道技术、进程理论
    今日内容UDP协议和实战并发编程理论多道技术进程理论进程的并行与并发进程的三状态UDP协议#客户端importsocket#指定使用UDP协议,不指定的话......
  • 进入python的世界_day33_网络编程—— 黏包现象、UDP协议、并发编程理论
    一、黏包现象1.何为黏包​ 流逝协议:所有的数据类似于水流连接在一起的​ 数据量很小并且时间间隔很多那么就会自动组织到一起recv​ 我们不知道即将要接收的......