您的位置:首页 > 运维架构 > Linux

Linux 中获取指定网口的IP地址(c实现)

2014-05-16 10:10 337 查看
/*
*功能:传入一个网口名,获取相应的IP地址
* */

#include <stdio.h>
#include <ifaddrs.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>

char *interface2ip(char *infName) {
struct ifaddrs *ifAddrStruct;
void *tmpAddrPtr=NULL;
char ip[16];
memset(ip, 0, sizeof(ip));
static char infIP[16];
getifaddrs(&ifAddrStruct);
while (ifAddrStruct != NULL)
{
if (ifAddrStruct->ifa_addr->sa_family==AF_INET && 0 == strcmp(ifAddrStruct->ifa_name,infName))
{
tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
inet_ntop(AF_INET, tmpAddrPtr, ip, INET_ADDRSTRLEN);
//printf("eth0 ip :%s\n",ip);
strcpy(infIP,ip);
//printf("infIP is :%s\n",infIP);
}
ifAddrStruct=ifAddrStruct->ifa_next;
}
//free ifaddrs
freeifaddrs(ifAddrStruct);
//return 0;
return infIP;
}

int main()
{
char infName[] = "eth0";
printf("the result is : %s\n",interface2ip(infName));

return 0;
}
结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: