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