如何查找UDP套接字的MTU值

时间:2015-04-16 04:37:19

标签: linux sockets udp mtu

我正在进行UDP套接字编程,如果请求的数据超过MTU值,我必须在应用程序中停止传输。

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

有没有办法用UDP套接字找到MTU值?

2 个答案:

答案 0 :(得分:0)

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

另请参阅this related question(关于获取C代码与ifconfig相同的信息)

答案 1 :(得分:0)

在linux中,这不是UDP,而是IP:

$ man 7 ip

它解释了一切。您正在寻找IP_MTU套接字选项。这非常复杂,因此您一定要阅读该手册页。在浏览时,还应该man udpman 7 socket

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