struct ifaddrs *addrs, *temp_addr;
int result;
result=getifaddrs(&addrs);
if(result != 0) {
perror("getifaddrs");
}
else { // successful
temp_addr=addrs;
while(temp_addr != NULL) {
if(strcmp(temp_addr->ifa_name, "en1") == 0) {
} //if en1
} //while loop
}
getifaddrs
函数将获取en0
,en1
,lo0
,... etc的接口,但我只想将其范围缩小到en1
的IP地址。因此,我有上述算法,但是缺少了一些东西。任何人都可以通过任何输入来改进上述内容,以便可以找到en1的IP地址。 最佳答案
像这样:
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netdb.h>
#include <ifaddrs.h>
struct ifaddrs *ifaddr, *ifa;
int family;
if (getifaddrs(&ifaddr) == -1) {
perror("getifaddrs");
exit(EXIT_FAILURE);
}
for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
if (ifa->ifa_addr == NULL)
continue;
family = ifa->ifa_addr->sa_family;
if (0 == strcmp(ifa->ifa_name,"en1" ) && (family == AF_INET)) { // v4
// en1
}
}
freeifaddrs(ifaddr);
关于c - 查找无线en1的IP地址的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19152072/