/*
eth_name:网卡名称,例如eth0
local_ip_addr:存放获取到的IP
*/
int Sraum_GetLocalIp(const char * eth_name, char *local_ip_addr)
{
int ret = -1;
register int fd;
struct ifreq ifr;
if (local_ip_addr == NULL || eth_name == NULL)
{
return ret;
}
if ((fd=socket(AF_INET, SOCK_DGRAM, 0)) > 0)
{
strcpy(ifr.ifr_name, eth_name);
if (!(ioctl(fd, SIOCGIFADDR, &ifr)))
{
ret = 0;
strcpy(local_ip_addr, inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr));
hilink_printf("local_ip_addr:%s\n",(char *)local_ip_addr);//打印测试
}
}
if (fd > 0)
{
close(fd);
}
return ret;
}
源码来自网络