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

  • 相关阅读:
    Swing 2
    Swing 1
    集合
    关于sql 模糊字段查询语句
    关于前端开发的几篇文章
    黄金点游戏
    word count
    四则运算
    软件工程——《构建之法》读后困惑
    自我介绍
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/9795865.html
Copyright © 2011-2022 走看看