c - 以编程方式在 C 中设置 MTU

标签 c sockets network-programming mtu

客户要求 MTU 限制应为 1492。

有没有办法在源代码(C 程序)中做到这一点?

一般情况下还有其他方法吗? (ifconfig?)

为什么有人需要将 MTU 修改到某个限制?有什么好处?而最 重要:通过更改 MTU 是否存在破坏代码的风险?

最佳答案

使用 C 的编程方式:

int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
struct ifreq ifr;
strcpy(ifr.ifr_name, "eth0");
if(!ioctl(sock, SIOCGIFMTU, &ifr)) {
  ifr.ifr_mtu // Contains current mtu value
}
ifr.ifr_mtu = ... // Change value if it needed
if(!ioctl(sock, SIOCSIFMTU, &ifr)) {
  // Mtu changed successfully
}

它至少在 Ubuntu 上有效,参见 man netdevice .

关于c - 以编程方式在 C 中设置 MTU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5903818/

相关文章:

c++ - ASIC 设备的 OpenCL(或其他)编程?

c - 链接C文件错误: linker command failed with exit code 1

perl - 套接字句柄上不必要的 ioctl(n, TCGETS) 调用

java - 当存在多个客户端时如何向单个客户端发送消息

c# - 如何从 Socket 获取 IP 地址

linux - 使用epoll检测网线拔出错误

K&R 的 C 编程 strindex 函数中最后一个 k>0 有何作用?

java - 将信息从 java 传递到 c++ 的最佳方式是什么?

c - Linux 以编程方式上/下接口(interface)内核

字符数组 __attribute__ 对齐