我正在尝试使用IP_MTU
套接字选项读取 TCP连接的 MTU
根据我在 Debian Etch 上安装的man 7 ip
(我知道,它已经很老了,但现在不能改变它):
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
[CUT]
IP_MTU Retrieve the current known path MTU of the current socket.
Only valid when the socket has been connected. Returns an integer.
Only valid as a getsockopt(2).
问题是上述套接字选项不存在于手册页指定的任何包含文件中。 (因此我的代码没有编译;))
相反,我发现它在<linux/in.h>
中定义(grep
是你的朋友)
如果我尝试将<linux/in.h>
添加到我的源代码中,我会得到所有类型的多重定义/重新声明编译错误。
有没有人知道为什么标题中缺少上述参数以及如何解决问题?
非常感谢
塞尔吉奥
答案 0 :(得分:1)
答案是:我认为没有答案。我正在运行Red Hat Enterprise Linux AS第4版(Nahant Update 8),我遇到了完全相同的问题:
所以,我想唯一要做的就是通过设置MTU发现,不断调整MTU并观察内核在你尝试发送太大的东西时关闭你来解决问题。这就是我要做的事。