如何解析包数据

lqj77 2003-05-25 12:59:47
有两个结构需要一次性在网络上传输,一个为类型,一个为内容,如下:
struct packhead{
char c1;
char c3;
int i2;
};

struct packcontent1{
char c1;
int i2;
char c3;
};
struct packcontent2{
char c1;
int i2;
char c3;
};
其中packhead存在每个包中,包的内容可以为packcontent1或packcontent2其中的一个,我在接收到这样的包后,该怎么样解析才能正确读取我所需的数据呢?
...全文
72 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
myredsun 2003-05-25
  • 打赏
  • 举报
回复
同意
pp616 2003-05-25
  • 打赏
  • 举报
回复
很简单。
建一个缓冲区char buf[需要的大小];
假设你收到的数据存放在buf中。
首先取packhead结构数据
packhead m_head;
memset(&m_head,0x00,sizeof(packhead));
memcpy(&m_head,buf,sizeof(packhead));
然后判断数据类型,假设数据类型标志是存放在packhead结构的i2成员中的。
if(m_head.i2==1)//下面的数据类型为packcontent1
{
packcontent1 pkt1;
memset(&pkt1,0x00,sizeof(packcontent1));
//提取packcontent1结构数据
memcpy(&pkt1,buf+sizeof(packhead),sizeof(packcontent1));
//处理数据
//.............
}
else if(m_head.i2==2)//下面的数据类型为packcontent2
{
packcontent2 pkt2;
memset(&pkt2,0x00,sizeof(packcontent2));
//提取packcontent2结构数据
memcpy(&pkt2,buf+sizeof(packhead),sizeof(packcontent2));
//处理数据
//.............
}

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧