无法读取tcp/ip头

无法读取tcp/ip头,tcp,network-programming,ip,Tcp,Network Programming,Ip,我收到此错误:'struct iphdr'没有名为'ip\u ttl'的成员 其他成员也一样,但礼宾费除外 解决方法是什么?它会发生吗? PS:我在各种论坛上都看到了这一点,但不明白为什么它能够访问iPhoneder->protocol而不是其他的假设您使用的是Linux,试着看看/usr/include/Linux/ip.h。该头文件定义了结构: struct iphdr { #if defined(__LITTLE_ENDIAN_BITFIELD) __u8 ihl:4,

我收到此错误:'struct iphdr'没有名为'ip\u ttl'的成员 其他成员也一样,但礼宾费除外 解决方法是什么?它会发生吗?
PS:我在各种论坛上都看到了这一点,但不明白为什么它能够访问iPhoneder->protocol而不是其他的

假设您使用的是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. */
};
struct iphdr{
#如果已定义(uuu LITTLE_ENDIAN_位字段)
__u8国际人道主义法:4,
版本:4;
#elif已定义(_BIG_ENDIAN_位域)
__u8版本:4,
国际人道主义法:4;
#否则
#错误“请修复”
#恩迪夫
__u8 tos;
__16托特伦;
__be16id;
__16岁;
__u8 ttl;
__u8协议;
__sum16检查;
__be32 saddr;
__be32 daddr;
/*选项从这里开始*/
};

如您所见,该字段的名称是
ttl
,而不是
ip\u ttl

假设您正在使用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. */
};
struct iphdr{
#如果已定义(uuu LITTLE_ENDIAN_位字段)
__u8国际人道主义法:4,
版本:4;
#elif已定义(_BIG_ENDIAN_位域)
__u8版本:4,
国际人道主义法:4;
#否则
#错误“请修复”
#恩迪夫
__u8 tos;
__16托特伦;
__be16id;
__16岁;
__u8 ttl;
__u8协议;
__sum16检查;
__be32 saddr;
__be32 daddr;
/*选项从这里开始*/
};

如您所见,该字段的名称是
ttl
,而不是
ip\u ttl

您能发布一些代码吗?另外,这个字段不就是“ttl”而不是“ip_ttl”吗?你能发布一些代码吗?此外,该字段不只是“ttl”而不是“ip_ttl”?
ip_ttl
来自
/usr/include/netinet/ip.h
中的BSD兼容ip头声明
ip_ttl
来自
/usr/include/netinet/ip.h
中的BSD兼容ip头声明。