还在手撸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 ...
随机推荐
- Docker 完整版教程
Docker 安装 一.安装前必读 在安装 Docker 之前,先说一下配置,我这里是Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可. 注意:本文的命令使用的是 roo ...
- Grafana Mimir:支持乱序的指标采集
Grafana Mimir:支持乱序的指标采集 译自:New in Grafana Mimir: Introducing out-of-order sample ingestion 很早之前在使用th ...
- 使用mysql5.7版本的mysqldump备份mysql8.0版本的数据库报错解决办法
使用mysql5.7版本的mysqldump命令执行备份mysql8.0版本的数据库时会报错: mysqldump: Couldn't execute 'SET SQL_QUOTE_SHOW_CREA ...
- logstash 读取MySQL数据到elasticsearch 相差8小时解决办法
logstash和elasticsearch是按照UTC时间的,kibana却是按照正常你所在的时区显示的,是因为kibana中可以配置时区信息. 具体看这个: logstash 的配置文件添加 fi ...
- rook-ceph说明
cluster.yaml文件 文件中有几个地方要注意: dataDirHostPath: 这个路径是会在宿主机上生成的,保存的是ceph的相关的配置文件,再重新生成集群的时候要确保这个目录为空,否则m ...
- C++实现双向RRT算法
C++实现双向RRT算法 背景介绍 RRT(Rapidly-exploring Random Trees)是Steven M. LaValle和James J. Kuffner Jr.提出的一种通过所 ...
- Netty 学习(七):NioEventLoop 对应线程的创建和启动源码说明
Netty 学习(七):NioEventLoop 对应线程的创建和启动源码说明 作者: Grey 原文地址: 博客园:Netty 学习(七):NioEventLoop 对应线程的创建和启动源码说明 C ...
- SpringSecurity 在 SSM架构中的使用
SpringSecurity - SSM SpringSecurity 对比 Shiro SpringSecurity的特点: 能和 Spring无缝贴合 能实现全面的权限控制 专门为 Web开发而设 ...
- rowkey设计原则和方法
rowkey设计首先应当遵循三大原则: 1.rowkey长度原则 rowkey是一个二进制码流,可以为任意字符串,最大长度为64kb,实际应用中一般为10-100bytes,它以byte[]形式保存, ...
- SpringMVC入手项目注解版
SpringMVC入手项目注解版 1.创建Maven项目在pom.xml文件引入相关的依赖 <dependencies> <dependency> <groupId> ...