gpt4 book ai didi

c - 缺少在 Debian Etch 上定义的 IP_MTU 套接字选项?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:12 25 4
gpt4 key购买 nike

我正在尝试使用 IP_MTU 读取我的TCP 连接MTU套接字选项
根据man 7 ip安装在我的 Debian Etch 上(我知道,它很旧,但现在不能更改它):

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 是你的 friend )
如果我尝试添加 <linux/in.h>对于我的源代码,我得到了各种多重定义/重新声明编译错误。有谁知道为什么标题中缺少上述参数以及如何解决该问题?
非常感谢
塞尔吉奥

最佳答案

答案是:我认为没有答案。我正在运行 Red Hat Enterprise Linux AS release 4 (Nahant Update 8),我遇到了完全相同的问题:

  • man 7 ip 说我可以查询 MTU
  • grep -Re IP_MTU/usr/include/* 表示宏只存在于linux/in.h
  • 我不能使用 linux/in.h,否则会出现大量错误

因此,我想唯一要做的就是通过设置 MTU 发现、不断调整 MTU 并观察内核在您尝试发送太大的内容时将您关闭来解决问题。这就是我要做的。

关于c - 缺少在 Debian Etch 上定义的 IP_MTU 套接字选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10462986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com