强制字节对齐方式
刚才的问题
http://community.csdn.net/Expert/topic/5409/5409821.xml?temp=.3010675
很感谢大家的热烈回答
现在我的问题是如何使他发送的数据包是60个字节的
我用ARPPACKET填充数据包,发送前还要把他给一个char类型
u_char packet[60]={0};
ARPPACKET arpPacket;
//填充arpPacket
memcpy(packet,&arpPacket,60);
然后就是发送packet数据包了
如何使packet不考虑对齐?把arpPacket复制给packet
[解决办法]
试试
#pragma pack(0)
吧。
[解决办法]
#pragma pack(push, 1)
typedef struct tagDLCHeader
{
unsigned char DesMAC[6]; //这个长度是6
unsigned char SrcMAC[6]; //这个长度是6
unsigned short Ethertype; //这个长度是2
} DLCHEADER, *PDLCHEADER;
typedef struct tagARPFrame
{
unsigned short HW_Type; 这个长度是2
unsigned short Prot_Type; 这个长度是2
unsigned char HW_Addr_Len; 这个长度是1
unsigned char Prot_Addr_Len; 这个长度是1
unsigned short Opcode; 这个长度是2
unsigned char Send_HW_Addr[6]; 这个长度是6
unsigned long Send_Prot_Addr; 这个长度是4
unsigned char Targ_HW_Addr[6]; 这个长度是6
unsigned long Targ_Prot_Addr; 这个长度是4
unsigned char padding[18];这个长度是18
} ARPFRAME, *PARPFRAME;
typedef struct tagARPPacket
{
DLCHEADER dlcHeader;
ARPFRAME arpFrame;
} ARPPACKET, *PARPPACKET;
#pragma pack(pop)
[解决办法]
也可以修改编译选项里面的东西,使1字节对齐
[解决办法]
#pragma pack(push, 1)和#pragma pack(pop)是什么意思哟
我发现只有visual studio编译器才有。。。