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
}

getifaddrs関数は、、、、...などのインターフェイスを取得しますが、en0のIPアドレスに絞り込みたいだけです。だから、私は上記のアルゴリズムを持っていますが、何かが欠けています。en1のIPアドレスを見つけることができるように、誰でも上記を改善するための入力を持っています。en1lo0en1

4

1 に答える 1

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);
于 2013-10-03T06:29:47.720 に答える