访问基于 Linux 的 IPHDR 和 TCPHDR
accessing linux based iphdr and tcphdr
我正在做一些网络编程。我正在尝试创建 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 时,它给我一个错误,即"找不到头文件"
谁能告诉我如何解决这个问题?
我已经编辑了我的回复。
您应该在用户空间中包含/usr/include/netinet/tcp.h(和 ip.h)。 .../linux/*.h 由设备驱动程序、模块和内核代码使用。
如果要使用 BSD 声明,请定义_BSD_SOURCE。