socket数据包解析问题 20
数据包格式如下:1、包头标志:固定为0x7e。2、控制码C:1个字节命令字(不得使用0x7E,0x7D)。3、数据长度L:L为数据域的字节数。2个字节。4、数据域DATA...
数据包格式如下:
1、包头标志:固定为0x7e。
2、控制码C:1个字节命令字(不得使用0x7E,0x7D)。
3、数据长度L:L 为数据域的字节数。2个字节。
4、数据域DATA:数据域包括数据标识和数据、密码等,其结构随控制码的功能而改变。
5、校验码CS:1个字节,控制码开始到校验码之前的所有各字节的模256 的和,即各字节二进制算术和,不计超过256 的溢出值。
6、包尾标志:固定为0x7e。
转译说明:
每个数据包的包头标志和包尾标志均使用0x7e标识。被包头标志和包尾标志包含的数据为正文
为了避免正文内也出现0x7e,收发送TCP包时需要对正文的0x7e进行转译。
如果正文出现0x7e,则发送方需将0x7e转为0x7d-0x5e,接收方需将0x7d-0x5e还原为0x7e。
如果正文数据出现0x7d,则发送方需将0x7d转为0x7d-0x5d,接收方需将0x7d-0x5d还原为0x7d。
特别说明:要求每个TCP包(转译后)的不得大于2048字节。在原文组包的时候就需要进行长度控制。
目前的问题就是怎么来组织这么个格式的数据?麻烦知道的提供思路或实现代码 展开
1、包头标志:固定为0x7e。
2、控制码C:1个字节命令字(不得使用0x7E,0x7D)。
3、数据长度L:L 为数据域的字节数。2个字节。
4、数据域DATA:数据域包括数据标识和数据、密码等,其结构随控制码的功能而改变。
5、校验码CS:1个字节,控制码开始到校验码之前的所有各字节的模256 的和,即各字节二进制算术和,不计超过256 的溢出值。
6、包尾标志:固定为0x7e。
转译说明:
每个数据包的包头标志和包尾标志均使用0x7e标识。被包头标志和包尾标志包含的数据为正文
为了避免正文内也出现0x7e,收发送TCP包时需要对正文的0x7e进行转译。
如果正文出现0x7e,则发送方需将0x7e转为0x7d-0x5e,接收方需将0x7d-0x5e还原为0x7e。
如果正文数据出现0x7d,则发送方需将0x7d转为0x7d-0x5d,接收方需将0x7d-0x5d还原为0x7d。
特别说明:要求每个TCP包(转译后)的不得大于2048字节。在原文组包的时候就需要进行长度控制。
目前的问题就是怎么来组织这么个格式的数据?麻烦知道的提供思路或实现代码 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏20(财富值+成长值)
1个回答
展开全部
//协议头
struct header
{
char flag = 0x7e;
char cFlag;
unsigned short len;
};
//消息
struct msg
{
struct header msg_header;
char data[2048];
char cs_code;
char bottom = 0x7e;
}
追问
能不能详细些?
追答
数据包格式就是让你定义一个协议体,我这里写的是C版的,char 是一个字节,short两个字节,
首先定义一个协议头,然后再进行定义整个协议,header就是协议头,包含 flag = 0x7e,控制码还有一个长度,然后msg定义整体协议,即一个协议头header,再加data[]协议体,最后加协议尾bottom=0x7e,如果是JAVA版,定义类即可
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询