【发布时间】:2013-12-14 14:49:09
【问题描述】:
我正在从 http://www.tcpdump.org/pcap.html 学习 libpcap,但我遇到了这段代码的问题:
struct sniff_ethernet {
u_char ether_dhost[ETHER_ADDR_LEN]; /* Destination host address */
u_char ether_shost[ETHER_ADDR_LEN]; /* Source host address */
u_short ether_type; /* IP? ARP? RARP? etc */
};
...
const struct sniff_ethernet *ethernet; /* The ethernet header */
ethernet = (struct sniff_ethernet*)(packet);
我得到了带有交换字节的 ether_type 值。我认为原因是我使用的是 x86_64 little-endian 机器,其中 LSB 位于最低地址,并且在数据包字节流中 ether_type MSB 在 LSB 之前。问题是:示例代码是仅在大端机器上工作还是我遗漏了什么?
【问题讨论】:
标签: c endianness pcap libpcap