我收到此错误:'struct iphdr'没有名为'ip_ttl'的成员 同样适用于其他成员,但不适用于协议领域 它有什么解决方案?而且它会发生吗? PS:我在各种论坛上都看到了这个但却无法理解为什么它能够访问ipHeader->协议而不是其他人
答案 0 :(得分:1)
假设您使用的是Linux,请尝试查看/usr/include/linux/ip.h
。该头文件定义了结构:
struct iphdr {
#if defined(__LITTLE_ENDIAN_BITFIELD)
__u8 ihl:4,
version:4;
#elif defined (__BIG_ENDIAN_BITFIELD)
__u8 version:4,
ihl:4;
#else
#error "Please fix <asm/byteorder.h>"
#endif
__u8 tos;
__be16 tot_len;
__be16 id;
__be16 frag_off;
__u8 ttl;
__u8 protocol;
__sum16 check;
__be32 saddr;
__be32 daddr;
/*The options start here. */
};
如您所见,该字段的名称为ttl
,而非ip_ttl
。