.NET socket接收数据问题?

TCP格式(括号内数值是字节数)
7E * * EF messagetype(1) messagectrl(4) [timemark(6)] blockcount(1) mark1len(1),mark1[],testspeed1(4),data1len(2),data1[],mark2len(1),mark2[],testspeed2(4), data2len(2),data2[] CRC  
解析如下
7E * * EF                0xEF是转发包的标识
messagetype(1)     1字节, 转发方式ID,                默认0为最常用的格式
messagectrl(4)       4字节, 转发控制字包含的转发内容包含哪些项    默认1表示包含时间戳
#define TimeMark 1   
#define WorkPlace 2 
比如messagectrl=1 表示其中包含时间戳 timemark 时间戳,固定为6位.
比如messagectrl=3 表示其中包含时间戳+工地信息(另有结构定义)
[timemark(6)]        6字节,时间戳, 这是可选项,根据messageCtrl来确定是不是有这项目  
blockcount(1)       1字节, 数据块数,一个块通常对应一个通道.最多对应256个通道
mark1len(1),         1字节, 数据块标识的长度, 通常是该通道描述信息的长度
mark1[],               n字节, 这里的长度取决于mark1len的长度 
testspeed1(4),       4字节 该通道的采集频率 
data1len(2),          2字节,数据的字节数,
data1[],                n字节, 数据内容,长度是data1len中值,每个数据为浮点数,实际个数=data1len/4  
mark2len(1),         1字节, 数据块标识的长度, 通常是该通道描述信息的长度
mark2[],               n字节, 这里的长度取决于mark2len的长度 
testspeed2(4),       4字节 该通道的采集频率 
data2len(2),          2字节,数据的字节数,
data2[],                n字节, 数据内容,长度是data2len中值,每个数据为浮点数,实际个数=data2len/4
......
CRC  

 

 

客户给的格式 .这个怎么接收呢?

你这个要分多次读取,用字节数组接收,根据客户文档按字节转换为对应的值。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632