C函数获取IP地址

来源:互联网 发布:阿兴网络项目 编辑:程序博客网 时间:2024/05/22 00:18
/************************************************* Function: get_ipaddrDescription: get ip addr Input:  net_dev  ipaddrOutput:  Return: 0 sucess -1 failedOthers: *************************************************/int get_ipaddr(const char *net_dev,  char* ipaddr){    struct ifreq ifr;    int fd = 0;int ret = -1;    struct sockaddr_in *pAddr;    if((NULL == net_dev) || (NULL == ipaddr))    {        dbg_log_print(LOG_ERR, "illegal call function SetGeneralIP!");        return -1;    }    if ((fd = socket(AF_INET,SOCK_DGRAM,0)) < 0)     {      dbg_log_print(LOG_ERR,"open socket failed");        return -1;    }    memset(&ifr,0,sizeof(ifr));    strcpy(ifr.ifr_name, net_dev);    if (ioctl(fd, SIOCGIFADDR, &ifr) < 0)    {        //dbg_log_print(LOG_ERR,"SIOCGIFADDR socket failed %s ", strerror( errno ));        close(fd);        return -1;    }    pAddr = (struct sockaddr_in *)&(ifr.ifr_addr);    strcpy(ipaddr, inet_ntoa(pAddr->sin_addr));    if(strlen(ipaddr) ==0)    {   dbg_log_print(LOG_DEBUG0, "ipaddr = [%s] len = 0",ipaddr);        ret = 0;    }    else    {    ret = 1;     dbg_log_print(LOG_DEBUG0, "ipaddr = [%s]",ipaddr);    }    close(fd);    return ret;}