0

申し訳ありませんが、タイトルが混乱している可能性があります。たとえば、br100の代わりにeth1を使用します。したがって、eth1のipv4アドレスはNULLです。

/ etc / network / interfaces

br100 Link encap:Ethernet HWaddr 00:0c:29:75:e2:0a
inet addr:192.168.11.249 Bcast:192.168.11.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe75:e20a/64 Scope:Link

eth1 Link encap:Ethernet HWaddr 00:0c:29:75:e2:0a
inet6 addr: fe80::20c:29ff:fe75:e20a/64 Scope:Link

NULLeth1のipv4を取得するときに、値を読み取るにはどうすればよいですか?

これが私のgetipv4関数です:

sIPv4 = new string[giIfaceCount];
struct ifaddrs *ifAddrStruct;
struct ifaddrs *ifa;
void *tmpAddrPtr;
if (getifaddrs(&ifAddrStruct) == -1)
{
    perror("getifaddrs");
    exit(1);
}
int iFlag4 = 0;
for (ifa = ifAddrStruct; ifa != NULL; ifa = ifa->ifa_next)
{
    if (ifa->ifa_addr->sa_family == AF_INET)
    {
        tmpAddrPtr=&((struct sockaddr_in *)ifa->ifa_addr)->sin_addr;
        char addressBuffer[1024];
        if (strcmp(inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, 1024),"NULL") == 0)
        {
            cout << "addressBuffer = NULL" << endl;
        }
        else
        {
            inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, 1024);
            if (strcmp(ifa->ifa_name,"lo") == 0)
            {
                continue;
            }
            else
            {
                *(sIPv4+iFlag4) = addressBuffer;
                testIPv4.append(addressBuffer);
                testIPv4.append(" ");
                iFlag4 = iFlag4+1;
            }
        }
    }
}
4

1 に答える 1

1

みんなのおかげで、私はすでに私の問題を解決しました。

簡単に言えば、私はすべての関数(約、、、 ...)を関数に結合getIPv4しましgetMACた。次に、 (インターフェースカウント)を介してホスト情報を1つずつ取得します。getIPv6getHostinfofor loop

最後に、私はすべての人に大いに感謝します。^ __ ^

于 2012-05-04T07:28:36.480 に答える