看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) net/if.h , netinet/in.h , arpa/inet.h 問題(Question): 因為eth1當成bridge使用,致使eth1中的IPv4沒有值, 但因為我還是需要get eth1的其他資訊(ipv6, mac...) 所以我想問各位,有辦法在get網卡的ipv4時, 若發現該網卡沒有值,我可以當成NULL來讀嗎? 是要在程式的哪邊做判斷,並且做寫入呢? 程式碼(Code):(請善用置底文網頁, 記得排版) void CHostinfo::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; } } } } } 補充說明(Supplement): 最後希望可以得到 eth1的ipv4 address: NULL 而不會因為沒有值就直接跳過,讀其他網卡的資訊。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.250.129.63