2012-05-03 29 views
0

對不起,標題可能被迷惑的細節。例如,eth1代替br100。 因此eth1的ipv4地址爲NULL。如何獲得IP地址(IPv4爲NULL,但IPv6是存在的),內容

的/ etc /網絡/接口

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 

我該怎麼做才能閱讀時,我得到的eth1的IPv4的NULL價值?

這裏是我的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; 
      } 
     } 
    } 
} 
+0

標題的確令人困惑。我建議你再試一次。你更可能用一個描述性標題得到答案。 – EJP

+0

檢查eth1是否加入網橋組,然後檢查以查看網橋組是否有配置的地址有什麼問題? –

回答

1

感謝球員,我已經解決了我的問題。

簡單地說,我已經合併的所有功能(約getIPv4getMACgetIPv6 ...)爲getHostinfo功能。 然後,它通過一個for loop(接口計數)獲得主機信息。

最後,我非常感謝所有的人。^__^