无法读取tcp / ip标头

时间:2011-03-24 21:20:17

标签: tcp network-programming ip

我收到此错误:'struct iphdr'没有名为'ip_ttl'的成员 同样适用于其他成员,但不适用于协议领域 它有什么解决方案?而且它会发生吗? PS:我在各种论坛上都看到了这个但却无法理解为什么它能够访问ipHeader->协议而不是其他人

1 个答案:

答案 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