【问题标题】:Difference in netinet/tcp.h Vs linux/tcp.hnetinet/tcp.h 与 linux/tcp.h 的区别
【发布时间】:2016-03-11 08:08:41
【问题描述】:

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

显然我的C 源包含netinet/tcp.h 而不是linux/tcp.hTCP_USER_TIMEOUT 定义在 linux/tcp.h 而不是 netinet/tcp.h 我读到 here 用户空间应用程序不应包含来自 linux/ 的任何标头(如本例中的 linux/tcp.h)。但该链接没有解释原因。

【问题讨论】:

    标签: c linux sockets tcp


    【解决方案1】:

    您的来源不正确,公告板几乎不是确定的来源。

    您不应该包含来自linux 目录的头文件,除非您尝试包含只有通过包含来自 linux 目录的头文件才能找到的 linux 特定功能。

    关于TCP_USER_TIMEOUTman-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 */
    

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

    【讨论】:

    • 谢谢,我查过了,确实这些文件需要更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多