【问题标题】:How to find MTU value for UDP sockets如何查找 UDP 套接字的 MTU 值
【发布时间】:2015-04-16 04:37:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: linux sockets udp mtu


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      $ man 7 ip
      

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

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

      【讨论】:

        猜你喜欢
        • 2012-08-02
        • 1970-01-01
        • 1970-01-01
        • 2020-02-21
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        • 1970-01-01
        • 2011-04-12
        相关资源
        最近更新 更多