Network interface list
Sample code
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <ifaddrs.h>
#include <netdb.h>
#include <netinet/in.h>
int main(int argc, char *argv[])
{
struct ifaddrs * addrs, * tmp;
getifaddrs(&addrs);
tmp = addrs;
while (tmp) {
char ipstr[INET6_ADDRSTRLEN] = {0,};
struct sockaddr * addr = (struct sockaddr*)tmp->ifa_addr;
printf("[%s]\n", tmp->ifa_name);
if (addr) {
inet_ntop(addr->sa_family,
(addr->sa_family == AF_INET ?
(void*)&((struct sockaddr_in*)addr)->sin_addr :
(void*)&((struct sockaddr_in6 *)addr)->sin6_addr),
ipstr, sizeof(ipstr));
printf(" * type: %d, addr: %s\n", addr->sa_family, ipstr);
}
tmp = tmp->ifa_next;
}
freeifaddrs(addrs);
return 0;
}
댓글 없음:
댓글 쓰기