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字节。在原文组包的时候就需要进行长度控制。

目前的问题就是怎么来组织这么个格式的数据?麻烦知道的提供思路或实现代码
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏20(财富值+成长值)
非鱼共享
2014-10-18 · 专注互联网技术,快速了解互联网研发
非鱼共享
采纳数:204 获赞数:695

向TA提问 私信TA
展开全部
//协议头
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版,定义类即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式