zoukankan      html  css  js  c++  java
  • c/c++ 网络编程 UDP 设定MTU

    网络编程 UDP 设定MTU

    MTU(Maximun Transmisson Unit):一次送信的最大size。

    在程序里动态改变MTU。注意:程序运行需要root权限。

    程序运行的方法:

    sudo ./a.out
    

    1,取得MTU

    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <sys/ioctl.h>
    #include <netinet/in.h>
    #include <net/if.h>
    
    int main(){
      int fd;
      ifreq ifr;
    
      fd = socket(AF_INET, SOCK_DGRAM, 0);
    
      strncpy(ifr.ifr_name, "enp0s3", IFNAMSIZ - 1);
    
      if(ioctl(fd, SIOCGIFMTU, &ifr) != 0){
        perror("ioctl");
        return 1;
      }
      close(fd);
    
      printf("Maximun Transmisson Unit:%d
    ", ifr.ifr_mtu);
      
      return 0;
    
    }
    
    

    github源代码

    2,改变MTU

    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <sys/ioctl.h>
    #include <netinet/in.h>
    #include <net/if.h>
    
    int main(){
      int fd;
      ifreq ifr;
    
      fd = socket(AF_INET, SOCK_DGRAM, 0);
    
      strncpy(ifr.ifr_name, "enp0s3", IFNAMSIZ - 1);
    
      //change Maximun Transmisson Unit to 1400
      ifr.ifr_mtu = 1400;
    
      if(ioctl(fd, SIOCSIFMTU, &ifr) != 0){
        perror("ioctl");
        return 1;
      }
      close(fd);
    
      printf("Maximun Transmisson Unit:%d
    ", ifr.ifr_mtu);
      
      return 0;
    
    }
    

    github源代码

    在命令行里也可以查看和改MTU(需要root权限)

    改变MTU:

    sudo ifconfig enp0s3 mtu 1400
    

    查看当前的MTU:

    sudo ifconfig enp0s3
    

    c/c++ 学习互助QQ群:877684253

    本人微信:xiaoshitou5854

  • 相关阅读:
    《阿里感悟》- 技术人员的职业规划
    DIV Vue-cil脚手架
    Django PIL模块(生成随机验证码)
    Django auth模块(用户认证组件)
    Django 数据处理流程
    Django 中间件
    Django ORM (2)
    Django组件——Form
    Django orm
    Django urls
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/9795865.html
Copyright © 2011-2022 走看看