还在手撸TCP/UDP/COM通信?一个仅16K的库搞定!
摘要
在一些项目中,可能会用到串口(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包管理平台,可直接在项目中安装使用,如需进行定制化修改,可联系本人获取完整源代码。
如有不懂或更好的方式请在留言区留下评论!!
还在手撸TCP/UDP/COM通信?一个仅16K的库搞定!的更多相关文章
- 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.2
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.0.1
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- TCP/UDP简易通信
TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端).UDP客户端 目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP部分的 ...
- 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.3
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- 【转】TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端
[转]TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端).UDP客户端 目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP ...
- 一个共通的viewModel搞定所有的编辑页面-经典ERP录入页面(easyui + knockoutjs + mvc4.0)
http://www.cnblogs.com/xqin/archive/2013/06/06/3120887.html 前言 我写代码喜欢提取一些共通的东西出来,之前的一篇博客中说了如何用一个共通的v ...
- 一个共通的viewModel搞定所有的分页查询一览及数据导出(easyui + knockoutjs + mvc4.0)
前言 大家看标题就明白了我想写什么了,在做企业信息化系统中可能大家写的最多的一种页面就是查询页面了.其实每个查询页面,除了条件不太一样,数据不太一样,其它的其实都差不多.所以我就想提取一些共通的东西出 ...
- TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端
目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP部分的使用 框架源码结构 补充说明 源码地址 说明 之前有好几篇博客在讲TCP/UDP通信方 ...
- [Java] Tcp/udp 简单通信
本文转自 我自己的博客guozeyiblog.cn 欢迎来訪 效果图: //UDP通信 import java.awt.*; import java.awt.event.ActionEvent; i ...
随机推荐
- Flink SQL 子图复用逻辑分析
子图复用优化是为了找到SQL执行计划中重复的节点,将其复用,避免这部分重复计算的逻辑.先回顾SQL执行的主要流程 parser -> validate -> logical optimiz ...
- 一文读懂,硬核 Apache DolphinScheduler3.0 源码解析
点亮 ️ Star · 照亮开源之路 https://github.com/apache/dolphinscheduler 本文目录 1 DolphinScheduler的设计与策略 1.1 分布 ...
- 亚马逊云科技现身世界人工智能大会,揭示AI最新技术趋势
2022世界人工智能大会(WAIC)于日前落幕.经过过去四届的发展与沉淀,今天的世界人工智能大会已成为人工智能领域最有影响力的国际盛会之一,今年大咖云集.国际大厂扎堆,充分彰显了大会的国际影响力和磁力 ...
- 在Windows Server 2019中配置多元密码策略
长久以来,微软活动目录中的账户只能配置同一个密码策略.上到管理员账户,下到普通用户的密码策略都是一样的.而且密码策略只能在域级别配置生效.OU级别的密码策略只会对该OU中计算机的本地账户生效.通常认为 ...
- catalina.out日志割接
文章转载自:https://blog.51cto.com/loong576/2091460 Tomcat的catalina.out日志分割有多种方式,如logrotate.cronolog等,本文采用 ...
- 使用yum方式安装的openresty参数
nginx version: openresty/1.19.3.1 built by gcc 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC) built with Ope ...
- MySQL集群搭建(1)-主备搭建
数据库在任何业务中都是最重要的环节之一,这就对数据库架构提出的较高的要求.单点数据库永远不应该出现在生产环境,我们已经目睹过太多由于单点.备份缺失造成的损失,所以,搭建高可用 MySQL 集群是非常有 ...
- MongoDB 单实例节点主机的用户和权限一般操作步骤
步骤总结: 1.先正常启动 2.创建用户,创建数据库病授权用户 3.关闭程序,开启安全,然后启动 4.使用账号和密码连接 按未开启认证的方式(配置文件中没开启安全选项并且启动命令中不添加 --auth ...
- Fluentd部署:错误排查
介绍一下排查Fluentd运行时错误的几种方法. 查看日志 如果感觉Fluentd运行异常,请先查看日志.td-agent安装后,默认日志存放在/var/log/td-agent/td-agent.l ...
- 利用python对websocket进行并发压测
简述 产品经理鉴于运营反馈并对程序的websocket长连接保持怀疑的态度,让我对websocket服务器进行压力测试,我内心是拒绝的. 开发思路 查阅websocket的相关资料,查到python的 ...