关于ARP结构体的定义

今天用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,结果显示正确了!

你可能感兴趣的:(struct)