您的位置:首页 > 其它

关于ARP结构体的定义

2009-06-15 14:03 302 查看
今天用winpcap截取ARP包,结果ARP输出的IP地址和MAC地址格式,总是出现问题

ARP的结构体定义如下:

struct ARP
{
unsigned short htype;
unsigned short ptype;
unsigned char hlen;
unsigned char plen;
unsigned short oper;
unsigned char destMac[6];
unsigned long spa;
unsigned char sourceMac[6];
unsigned long tpa;
};


利用printf("%d/n",sizeof(struct ARP));

发现输出结构体的大小为32,而不是28,所以输出MAC地址和IP地址的时候出现了错误

上网查了很多,最后用强制结构体紧凑分配空间

在程序开始处,添加

#pragma pack(1)

再输出ARP结构的大小为28,再输出ARP的MAC和IP,结果显示正确了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: