1

我正在研究 UDP 套接字编程,如果请求的数据大于 MTU 值,我必须停止应用程序中的传输。

为了实现这一点,我必须读取 MTU 值,但我不知道在 UDP 套接字的情况下如何获取 MTU 值(可能是通过使用 getsockopt())。

有什么方法可以通过 UDP 套接字找到 MTU 值?

4

2 回答 2

0

ifconfig命令给出了 MTU。通过straceing 它,我看到它使用ioctl(在某些套接字文件描述符上)SIOCGIFMTU来查询 MTU

另请参阅此相关问题(关于获取与 C 代码相同的信息ifconfig

于 2015-04-16T04:49:18.997 回答
0

在 linux 中,它不是 UDP 的东西——它是 IP 的东西:

$ man 7 ip

它解释了一切。您正在寻找IP_MTU套接字选项。它非常复杂,因此您肯定想阅读该手册页。当你在做的时候,你也应该man udpman 7 socket.

我花了很长时间才弄清楚这一点,因为它没有被提及man sys_socket.h

于 2020-02-12T03:28:48.133 回答