我正在进行UDP套接字编程,如果请求的数据超过MTU值,我必须在应用程序中停止传输。
要实现这一点,我必须阅读MTU值但我不知道如何在UDP套接字的情况下获得MTU值(可以通过使用getsockopt())。
有没有办法用UDP套接字找到MTU值?
答案 0 :(得分:0)
ifconfig
命令给出了MTU。通过strace
我看到它使用ioctl
(在一些套接字文件描述符上)和SIOCGIFMTU
来查询MTU
另请参阅this related question(关于获取C代码与ifconfig
相同的信息)
答案 1 :(得分:0)
在linux中,这不是UDP,而是IP:
$ man 7 ip
它解释了一切。您正在寻找IP_MTU
套接字选项。这非常复杂,因此您一定要阅读该手册页。在浏览时,还应该man udp
和man 7 socket
。
我花了很长时间才弄清楚这一点,因为man sys_socket.h
中没有提到它!