访问基于linux的iphdr和tcphdr

时间:2013-11-11 03:10:31

标签: c++ linux network-programming

我正在做一些网络编程。我正在尝试创建tcp和ip标头。我在读数中发现,有两种方法可以做到这一点:1)基于linux和2)基于BSD。

我想使用linux方法,主要包括linux / ip.h和linux / tcp.h 我正在寻找的标题类型是

     struct tcphdr {
    unsigned short source;
    unsigned short dest;
    unsigned long seq;
    unsigned long ack_seq;  
    unsigned short doff:4;
    unsigned char syn;
    unsigned short window;  
    unsigned short check;
    unsigned short urg_ptr;

};

但我得到了这个:

    struct tcphdr {
       u_short th_sport;
       u_short th_dport;
       tcp_seq th_seq;
       tcp_seq th_ack;
       u_int   th_x2:4,
             th_off:4;
       u_char  th_flags;
       u_short th_win;        
       u_short th_sum;        
       u_short th_urp;        
 };

现在,我在mac上使用Xcode在c ++中编码。但是,当我执行#include时,它会给出一个“未找到头文件”的错误

任何人都可以告诉我如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我已经编辑了我的回复。

您应该在用户空间中包含/usr/include/netinet/tcp.h(和ip.h)。 ... / linux / * .h由设备驱动程序,模块和内核代码使用。

如果要使用BSD声明,请定义_BSD_SOURCE。