0

我正在做一些网络编程。我正在尝试创建 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 时,它​​会给我一个错误“找不到头文件”

谁能让我知道我该如何解决这个问题?

4

1 回答 1

0

我已经编辑了我的回复。

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

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

于 2013-11-11T03:55:30.260 回答