C#使用WebSocket进行链接

C#使用WebSocket进行网络链接,和服务端搭建一个长连接进行通信。

有两种方式:串口方式(SerialPort)和网口方式(Socket 包括:TcpClient和UdpClient)

准备:

1.C#使用WebSocket的一种方法是使用SerialProt类(这个需要在Nuget包中添加System.IO.Ports,然后引入)

2.对于SerialPort的使用首先是声明实例化:

复制代码
serialPort.Open(); //打开串口
serialPort.Close();//应该是关闭,目前没有试验过

注:对于串口(端口)一个端(服务端或者客户端)只能打开一次

解决:

设置serialPort

//一般需要的参数:串口名称,波特率,校验位,数据位,停止位

名称:看自己电脑,一般COM+数字

波特率可以查一下是否是必须要写的,

校验位:奇偶校验啥的

数据位:数据

停止位:到哪里停止,或者说是用来控制接受到的数据需要保留多少

//还有读/写缓存区大小,读写超时,判断链接状态等参数;

写操作:

复制代码
serialPort.Write(); //进行WebSocket通信的写操作

两种方法:

读操作

三个参数:bety数组,偏移字节,接受长度count

serialPort。BytesToRead是读取字节数

复制代码
serisalPort.Read();

进行类型转换成string

复制代码
string msg = Econding.ASCLL.GetString(respBytes);

事件委托来进行读操作

在主函数中进行事件声明,然后定义函数逻辑

这部分会有这个问题:

这是因为在异步线程中处理了UI控件(这里进行的事件通知建立了长连接,就是在异步线程中进行的),UI控件必须在主线程处理

这部分可以使用MVVM模式进行数据绑定,这样在数据更新的时候不会触发异步线程导致的报错,使用MVVM模式的数据绑定不会出现上述问题:

上述问题的解决办法:

Socket对象(TcpClient和UdpClient)

准备

Socket引用using System.Net.Sockets


链接

发送

发送的代码

接受

主动接受

一个汉字四个字节,汉字使用UTF8编码。而且注意:

这部分还是会报错,因为UI线程需要在主线程中,不能使用在异步线程中,需要像下面一样:

第二种方法:

相关推荐
嵌入式小杰15 分钟前
一阶低通滤波入门教程:从原理到单片机 C 代码实现
c语言·开发语言·stm32·单片机·算法
叼烟扛炮24 分钟前
C++ 知识点02 输入输出
开发语言·c++·算法·输入输出
qcx2326 分钟前
深度解析Deepseek V4:1M 上下文不是军备竞赛,是养 Agent 的人才知道的痛
java·开发语言
小此方29 分钟前
Re:思考·重建·记录 现代C++ C++11篇(六) 从 shared_ptr 到 weak_ptr:起底智能指针的引用计数与循环引用之痛
开发语言·c++·c++11·现代c++
晨非辰31 分钟前
吃透C++两大默认成员函数:const成员函数、 & 取地址运算符重载
java·大数据·开发语言·c++·人工智能·后端·面试
我滴老baby34 分钟前
多智能体协作系统设计当AI学会团队合作效率翻十倍
android·开发语言·人工智能
落雪寒窗-36 分钟前
Python进阶核心路线(工程向)
开发语言·python
humcomm36 分钟前
全栈开发技术栈的最新进展(2026年视角)
开发语言·架构
聆风吟º1 小时前
【C标准库】深入理解C语言pow函数:从入门到精通,一文搞定幂运算
c语言·开发语言·库函数·pow·幂运算
Vallelonga1 小时前
Rust 中 Cargo.toml & Cargo.lock
开发语言·后端·rust