我正在尝试使用TCP_USER_TIMEOUT
中添加到linux的TCP选项2.6.37
。
我的C
来源显然包含netinet/tcp.h
而不是linux/tcp.h
。 TCP_USER_TIMEOUT
中定义了linux/tcp.h
,而netinet/tcp.h
中未定义linux/
用户空间应用不应包含来自linux/tcp.h
的任何标头here {就像在这种情况下{ {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 */
至少在我的包含文件中,它存在于两个文件中。也许您需要更新您的包含。