有两个结构需要一次性在网络上传输,一个为类型,一个为内容,如下:
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其中的一个,我在接收到这样的包后,该怎么样解析才能正确读取我所需的数据呢?
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其中的一个,我在接收到这样的包后,该怎么样解析才能正确读取我所需的数据呢?
解决方案 »
- 如何获取属性页上的多个编辑框的数据
- VS2008中用ATL设计了一个简单的COM组件,仅仅完成几个简单的算术运算。制作好后该组件不能在其他的计算机上注册,请问为什么,怎么办?
- 在VC控制台程序中用哪个函数完成这个功能?
- 关于数据库Open()时出错的一个问题~~~~~~~~
- OpenURL函数的缓冲问题
- 我是新手
- 一个关于CAsyncSocket编程的问题!!!
- 如何理解 int *(*menu())()---有请各路高手
- 菜鸟求助,高手请进~~ 关于颜色渐变条和同心圆问题
- 为什么我directshow开发的 声音和图象都有很大的延迟,而且随时间图象就会卡住??谢谢
- 散分:给个理由先!(限前10名)
- 怎样做帮助文件?
假设你收到的数据存放在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));
//处理数据
//.............
}