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;
    }



  • 相关阅读:
    Maven导入com.google.common.collect jar包
    poj 2192 Zipper
    poj 3278 Catch That Cow
    poj 2488 A Knight's Journey
    poj 3982 序列
    poj 2109 Power of Cryptography
    poj 3258 3273
    java中大数的一些基本运算
    hdu 1715 大菲波数
    最小生成树模板
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6172408.html
Copyright © 2011-2022 走看看