新闻详情

新闻详情

首页 / 资讯中心 / 详情

C# 网络相关 API 汇总:Socket / TcpListener / TcpClient / UdpClient

发布时间:2026/11/10 13:57:27来源:尧图网络
C# 网络相关 API 汇总:Socket / TcpListener / TcpClient / UdpClient
一、整体层级架构核心认知从底层到上层依次递进所有高层类均基于原生Socket封装原生底层SocketTCP/UDP通用自由度最高高层封装TCP体系TcpListener服务端监听、TcpClient客户端通信UDP体系UdpClient无连接报文通信Modbus协议层NModbus4基于TcpClient/串口封装专属工业协议核心区别TCP面向连接、可靠有序、存在粘包问题UDP无连接、不可靠、无粘包、单报文单次收发NModbus4仅支持TCP/串口RTU/ASCII不支持UDP通用命名空间// 基础网络 using System.Net; using System.Net.Sockets; // NModbus4 工业协议 using Modbus.Device; using Modbus.Data;二、原生 Socket 全套API同步异步1. 构造方法// TCP 套接字 new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // UDP 套接字 new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);2. TCP 核心方法同步方法Bind()绑定本机IP和端口服务端必备Listen(int backlog)开启TCP监听Accept()阻塞等待客户端连接返回新通信SocketConnect()客户端连接服务端Send()/Receive()收发字节数据异步 Task 方法推荐TaskSocket AcceptAsync(SocketAsyncEventArgs e); Task ConnectAsync(EndPoint remoteEP); Task ConnectAsync(string host, int port); Taskint SendAsync(ArraySegmentbyte buffer, SocketFlags socketFlags); Taskint ReceiveAsync(ArraySegmentbyte buffer, SocketFlags socketFlags);3. UDP 核心方法UDP无连接无需握手支持指定远端收发同步方法Bind()绑定本地端口接收数据必备SendTo(byte[], IPEndPoint)指定地址发送报文ReceiveFrom(byte[], ref IPEndPoint)接收并获取发送方地址Connect()锁定远端地址简化后续收发异步 Task 方法Taskint SendToAsync(ArraySegmentbyte buffer, SocketFlags socketFlags, EndPoint remoteEP); Taskint ReceiveFromAsync(ArraySegmentbyte buffer, SocketFlags socketFlags, EndPoint remoteEP);4. Socket 通用方法Shutdown(SocketShutdown.Both)优雅关闭收发通道Close()/Dispose()释放套接字资源SetSocketOption()设置超时、缓冲区、端口复用等三、TCP 高层封装TcpListener服务端1. 核心功能封装Socket的BindListen专门用于TCP服务端监听不直接收发数据2. 全套API同步Start()、Stop()异步TaskTcpClient AcceptTcpClientAsync(); TaskSocket AcceptSocketAsync();使用流程Start() → 异步Accept获取客户端通道 → 基于TcpClient通信四、TCP 高层封装TcpClient客户端/会话通道1. 核心功能封装TCP连接和数据流是NModbus4 TCP主站的核心依赖2. 全套API同步Connect()、Close()、GetStream()异步连接方法Task ConnectAsync(string host, int port); Task ConnectAsync(IPAddress address, int port); Task ConnectAsync(IPAddress[] addresses, int port);数据流异步读写NetworkStreamNetworkStream stream tcpClient.GetStream(); Taskint ReadAsync(byte[] buffer, int offset, int count); Task WriteAsync(byte[] buffer, int offset, int count);常用属性Connected连接状态、Client获取底层原生Socket五、UDP 高层封装UdpClient1. 核心功能简化UDP报文收发无连接模式单报文独立传输无粘包2. 全套API同步Send()、Receive()、Connect()、Close()异步核心方法TaskUdpReceiveResult ReceiveAsync(); Taskint SendAsync(byte[] datagram, int bytes); Taskint SendAsync(byte[] datagram, int bytes, IPEndPoint endPoint);备注UdpReceiveResult 包含 Buffer数据、RemoteEndPoint发送方地址六、NModbus4 全套异步API工业Modbus TCP/RTU1. 核心角色说明ModbusIpMasterModbus TCP 主站客户端主动读写设备ModbusSerialMasterModbus RTU/ASCII 串口主站ModbusTcpSlaveModbus TCP 从站服务端模拟设备关键限制NModbus4不支持UDP无任何UDP相关封装2. ModbusIpMaster 全套异步读写API最常用// 01 读线圈 Taskbool[] ReadCoilsAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints); // 02 读离散输入 Taskbool[] ReadInputsAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints); // 03 读保持寄存器 Taskushort[] ReadHoldingRegistersAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints); // 04 读输入寄存器 Taskushort[] ReadInputRegistersAsync(byte slaveAddress, ushort startAddress, ushort numberOfPoints); // 05 写单个线圈 Task WriteSingleCoilAsync(byte slaveAddress, ushort address, bool value); // 06 写单个保持寄存器 Task WriteSingleRegisterAsync(byte slaveAddress, ushort address, ushort value); // 15 写多个线圈 Task WriteMultipleCoilsAsync(byte slaveAddress, ushort startAddress, bool[] values); // 16 写多个保持寄存器 Task WriteMultipleRegistersAsync(byte slaveAddress, ushort startAddress, ushort[] values); // 拓展小众接口 Taskbyte ReadExceptionStatusAsync(byte slaveAddress); TaskModbusCommEvent ReadCommEventCounterAsync(byte slaveAddress); TaskModbusSlaveIdentity ReportSlaveIdentityAsync(byte slaveAddress);3. Modbus 主站创建方式// 方式1内部自动创建TcpClient最简 ModbusIpMaster master ModbusIpMaster.CreateIp(127.0.0.1, 502); // 方式2复用自定义TcpClient推荐可控连接生命周期 TcpClient tcp new TcpClient(); await tcp.ConnectAsync(127.0.0.1, 502); ModbusIpMaster master ModbusIpMaster.CreateIp(tcp); // 超时配置 master.Transport.ReadTimeout 1500; master.Transport.WriteTimeout 1500;4. Modbus 从站SlaveAPI从站无异步读写接口直接操作内存寄存器同步运行// 创建从站并启动监听 ModbusTcpSlave slave ModbusTcpSlave.CreateTcp(1, IPAddress.Any, 502); slave.DataStore ModbusDataStoreFactory.CreateDefault(); slave.Listen(); // 直接操作寄存器 slave.DataStore.HoldingRegisters[0] 100; slave.DataStore.CoilDiscretes[0] true; // 停止服务 slave.Stop(); slave.Dispose();5. Modbus RTU 串口主站方法签名与TCP主站完全一致仅创建方式不同ModbusSerialMaster rtuMaster ModbusSerialMaster.CreateRtu(serialPort); // 同样调用 ReadXXXAsync / WriteXXXAsync 系列方法七、核心使用注意事项高频避坑粘包问题TCP、TcpClient、Modbus TCP均存在粘包需手动分包UDP无粘包UDP限制NModbus4不支持Modbus UDP如需使用需手动基于UdpClient拼装解析报文版本区分ModbusIpMasterTCP无CRC、ModbusSerialMasterRTU带CRC不可混用连接管理NModbus4依赖TcpClient连接连接断开后需重新创建主站无法自动重连异常处理所有Async方法超时、断线、设备异常均会抛异常必须try-catch资源释放TcpClient、UdpClient、Modbus主从站均需Dispose释放套接字资源SlaveId规则Modbus TCP常规设备SlaveId填1串口RTU需严格匹配设备地址八、最终层级速查表类名通信模式核心异步方法适配NModbus4Socket(TCP)底层TCPAcceptAsync、ConnectAsync、SendAsync、ReceiveAsync需包装为TcpClientSocket(UDP)底层UDPSendToAsync、ReceiveFromAsync不支持TcpListenerTCP服务端监听AcceptTcpClientAsync支持自定义从站TcpClientTCP客户端ConnectAsync、ReadAsync、WriteAsync✅ 核心依赖UdpClientUDP报文通信ReceiveAsync、SendAsync不支持ModbusIpMasterModbus TCP主站全系列Read/WriteAsync——ModbusTcpSlaveModbus TCP从站无异步接口——
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/10 4:49:37

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/9 8:37:19

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/10 9:14:31

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/10 1:10:29

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/9 8:37:18

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/9 8:37:18

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉