2013-10-03 76 views
0
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 
} 

的​​功能的IP地址將獲得接口,en0en1lo0,...等,但我只想將它縮小到en1 IP地址。所以,我有上面的算法,但缺少一些東西。任何人都有任何改善上述的輸入,因此可以找到en1的IP地址。算法來尋找無線EN1

回答

0

事情是這樣的:

#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);