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

netinet/tcp.h与linux/tcp.h的区别,c,linux,sockets,tcp,C,Linux,Sockets,Tcp,我正在尝试使用TCP选项TCP\u USER\u TIMEOUT,它是在2.6.37中添加到linux的 显然,我的C源代码包括netinet/tcp.h而不是linux/tcp.h。而TCP\u USER\u TIMEOUT是在linux/TCP.h中定义的,而不是在netinet/TCP.h中定义的。我了解到,用户空间应用程序不应该包含linux/中的任何头(就像本例中的linux/TCP.h)。但是这个链接并不能解释原因。你的消息来源是不正确的,公告栏也很难确定消息来源 您不应该包含lin

我正在尝试使用TCP选项
TCP\u USER\u TIMEOUT
,它是在
2.6.37
中添加到linux的


显然,我的
C
源代码包括
netinet/tcp.h
而不是
linux/tcp.h
。而
TCP\u USER\u TIMEOUT
是在
linux/TCP.h
中定义的,而不是在
netinet/TCP.h
中定义的。我了解到,用户空间应用程序不应该包含
linux/
中的任何头(就像本例中的
linux/TCP.h
)。但是这个链接并不能解释原因。

你的消息来源是不正确的,公告栏也很难确定消息来源

您不应该包含
linux
目录中的头文件,除非您试图包含linux特定的函数,而这些函数只能通过包含linux目录中的头文件来找到

关于
TCP\u USER\u TIMEOUT
,关于许多选项的注释“此选项不应用于可移植的代码”。虽然在
TCP\u USER\u 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 */

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

谢谢,我检查过了,确实这些文件需要更新。