c#之间的TCP通信以及报文格式和接收处理

本文介绍了一个C#实现的TCP通信示例,包括服务器和客户端的交互。内容涉及报文格式的设计,例如包含总字节数、变量名和数据的结构。在接收端,文章详细阐述了如何处理可能因网络不稳定导致的不完整报文,通过循环和条件判断确保正确组装报文。感兴趣的读者可以下载示例代码进行研究。
摘要由CSDN通过智能技术生成

目前有一个小demo,模拟的是一台机子上的服务器和客户端的发送和接收消息,我打包上传,有兴趣的可以下载看看,网址是:Tcp通信—本机发送接收
https://download.csdn.net/download/yuanyuanluoluo/10356566

项目中用的就是demo中的部分代码,连接上后,就是接收报文,处理报文

报文格式具体要和发送端协商,我这里的报文格式是这样的

一组报文
这里写图片描述

1.一个float,表示这组报文的总字节数
2.一个float,表示变量名的总字节数
3.多个char,每一个变量名
4.一个float,表示数据的总字节数
5.多个double,每一个变量对应的数值

下面是解析一组报文的核心代码:

                    //对data清零  
                    recvData = new byte</
C#中Modbus RTU(Remote Terminal Unit)和TCP(Transmission Control Protocol)是两种不同的通信协议,它们在Modbus应用层传输数据时有着不同的报文格式。 **Modbus RTU报文格式:** - Modbus RTU通常用于点对点或串行通信,使用ASCII或二进制格式。 - 基本结构包括:起始标识符(0x02或0x06),功能码(如读取输入寄存器、写入单个寄存器等),寄存器地址和数量,数据段,校验和(CRC16),以及停止标识符(通常是0x0D 0x0A或CR LF)。 - 数据以字节为单位发送,每个字节用8位表示。 **Modbus TCP报文格式:** - Modbus TCP是基于TCP/IP协议的,适用于网络环境中的通信。 - 报文包含完整的TCP头部,然后是Modbus协议头部,包括协议版本号(通常为1)、设备地址(一般为1),功能码,寄存器地址和数量。 - 数据以二进制形式传输,使用PDU(Protocol Data Unit)结构,每个功能码都有特定的数据段格式。 - 校验不是必需的,但可以通过序列号和确认应答机制保证数据完整性。 **主要区别:** 1. **通信介质**:RTU是串行的,TCP是网络协议,支持IP网络。 2. **可靠性**:RTU依赖于硬件握手和简单的错误检测,而TCP提供更高级别的连接管理和错误恢复。 3. **协议头部**:RTU使用简单的帧结构,TCP则使用复杂的TCP头部,支持面向连接、可靠的数据传输。 4. **报文格式**:RTU的报文是字节对齐的,TCP报文是标准的TCP包。 **相关问题--:** 1. Modbus RTU如何处理错误检测? 2. TCP报文如何确保数据传输的可靠性? 3. 在工业自动化中,哪种协议更适合大规模网络部署?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值