netinet / tcp.h与linux / tcp.h的区别

时间:2015-12-06 19:04:18

标签: c linux sockets tcp

我正在尝试使用TCP_USER_TIMEOUT中添加到linux的TCP选项2.6.37

我的C来源显然包含netinet/tcp.h而不是linux/tcp.hTCP_USER_TIMEOUT中定义了linux/tcp.h,而netinet/tcp.h中未定义linux/用户空间应用不应包含来自linux/tcp.h的任何标头here {就像在这种情况下{ {1}})。但这个链接并不能解释原因。

1 个答案:

答案 0 :(得分:2)

您的来源不正确,并且公告牌几乎不是明确的来源。

除非您尝试包含特定于Linux的特定函数,否则不应包含linux目录中的头文件,只能通过包含linux目录中的头文件来找到它。

关于TCP_USER_TIMEOUT,关于许多选项的man-page for TCP注释'此选项不应用于可移植的代码' 。虽然在TCP_USER_TIMEOUT方面没有注意到这一点,但根据我的理解,这是一个仅限linux的选项。

然而,在这种情况下:

$ grep -r TCP_USER_TIMEOUT /usr/include
/usr/include/netinet/tcp.h:#define TCP_USER_TIMEOUT  18 /* How long for loss retry before timeout */
/usr/include/linux/tcp.h:#define TCP_USER_TIMEOUT   18  /* How long for loss retry before timeout */

至少在我的包含文件中,它存在于两个文件中。也许您需要更新您的包含。