读书人

C++怎么发送多个结构体

发布时间: 2012-08-13 13:21:53 作者: rapoo

C++怎样发送多个结构体啊
我想用一个结构体定义发送的数据头,比如说struct myHead{int type;//发送的类型 int len;//数据的长度;}然后是几个结构体对应相应的type,这个该怎么做,用TCP连接发送跟接受的,各位大侠帮帮忙啊,给个代码或者具体操作步骤来,谢谢,分不多了,各位帮帮忙。

[解决办法]
直接memcpy拷贝到一个BUF里就行了
[解决办法]
1.设置两边的内存对齐方式相同
2.一个一个发或者把他们连到一起发都可以
[解决办法]
C和C++的精髓就在于指针的应用.像你说的那种情况,用指针应该很容易的呀.
[解决办法]
你char[16]都一样,那更简单了
一个字节够表示,何必用结构体套结构体
const BYTE _1stByte=readOne;

switch (_1stByte)
{
case 1: do something as IP;break;
case 2: do something as MAC;break;
[解决办法]
楼主可以这么做:

在send数据的时候格式为:包头+包体+包尾

包头:
strcut packhead
{
int cmd;//根据不同的结构体设置不同的命令
int length;//包体数据长度,按照4字节对齐
};

这样你在接受的时候,先解析包头数据,然后根据包头的数据长度,来收取包体的数据;根据包头的类型来判定是何种类型



[解决办法]

C/C++ code
struct PK_HEAD{BYTE pkType;DWORD pkLength;};struct PK_A{PK_HEAD head;char IP[16];};struct PK_B{PK_HEAD head;char DNS[16];};struct PK_C{PK_HEAD head;char MAC[16];};struct PKDATA{PK_HEAD pk_head;...PK_C pk_c;};char buf[100] = {0};PKDATA pk_data;//赋值memcpy( buf, &pk_data, sizeof( PKDATA ) );
[解决办法]
序列化之后发就可以了,可以用xml,json,protocol buffer等等
[解决办法]
定义一个组包分包的协议格式,然后序列化一下就可以了

读书人网 >C++

热点推荐