zoukankan      html  css  js  c++  java
  • linux C 获取与修改IP地址

    主要有两种方法:


    一种是用system执行shell命令,如:

    system("ifconfig usb0 192.168.1.188");  

      
    另一种用ioctl系统调用:

    int usb_chann_setip(char *ip)
    {
    	struct ifreq temp;
    	struct sockaddr_in *addr;
    	int fd = 0;
    	int ret =-1;
    
    	strcpy(temp.ifr_name, "usb0");
    
    
    	if((fd = socket(AF_INET, SOCK_STREAM, 0))<0){
    		++usb_info.setip_socket_open_failed;
    		return -1;
    	}
    
    	addr = (struct sockaddr_in *)&(temp.ifr_addr);
    	addr->sin_family = AF_INET;
    	addr->sin_addr.s_addr = inet_addr(ip);
    	ret = ioctl(fd, SIOCSIFADDR, &temp);
    	close(fd);
    
    	if(ret < 0){
    		++usb_info.setip_socket_ioctl_failed;
    		return -1;
    	}
    
    	return 0;
    }
    
    char *usb_chann_getip(char *ip_buf)
    {
    	struct ifreq temp;
    	struct sockaddr_in *myaddr;
    	int fd = 0;
    	int ret =-1;
    
    	strcpy(temp.ifr_name, "usb0");
    
    	if ((fd = socket(AF_INET, SOCK_STREAM, 0))<0){
    		++usb_info.getip_socket_open_failed;
    		return NULL;
    	}
    
    	ret = ioctl(fd, SIOCGIFADDR, &temp);
    	close(fd);
    
    	if (ret < 0){
    		++usb_info.getip_socket_ioctl_failed;
    		return NULL;
    	}
    
    	myaddr = (struct sockaddr_in *)&(temp.ifr_addr);
    	strcpy(ip_buf, inet_ntoa(myaddr->sin_addr));
    
    	return ip_buf;
    }



  • 相关阅读:
    求C的近似值
    判断是否直角三角形
    温度转换异常处理
    python html页面
    python 爬虫goole主页
    python 足球模拟
    python模拟羽毛球竞技
    python 读书报告
    python 用jieba分词统计关于红楼梦的高频词
    python 在终端输出如下信息
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332330.html
Copyright © 2011-2022 走看看