上个月写了一篇文章,介绍了如何获取本机的第一个IP。后面我再想是否有办法获取LINUX主机的所有的IP,通过查询资料,找到了方法。
借助对象ifaddrs以及getifaddrs函数可以实现这样的功能。
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netdb.h>
#include <ifaddrs.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
char hostname[100]={0};
char localIpAddress[256]={0};
struct hostent *h;
gethostname(hostname,sizeof(hostname));
printf("host name is %s \n",hostname);
h=gethostbyname(hostname);
//struct in_addr *temp;
//temp=(struct in_addr *)h->h_addr;
//strcpy(localIpAddress,inet_ntoa(*temp));
//printf("first ip is %s\n",localIpAddress);
char mac[30]={0};
struct