我使用的一個小片段就像尋找一個特定的網絡地址:getifaddrs是否給我重複的網絡接口地址?
char name[INET_ADDRSTRLEN];
struct ifaddrs *iflist;
if (getifaddrs(&iflist) < 0)
perror("getifaddrs");
struct in_addr addr;
for (struct ifaddrs *p = iflist; p; p = p->ifa_next)
{
if (strcmp(p->ifa_name, "lo") == 0)
{
addr = reinterpret_cast<struct sockaddr_in*>(p->ifa_addr)->sin_addr;
if (inet_ntop(AF_INET, &addr, name, sizeof(name)) == NULL)
{
perror("inet_ntop");
continue;
}
cout << name << " ---> " << if_nametoindex("lo") << " : " << addr.s_addr << endl;
}
}
和輸出我得到的是:
1.0.0.0 ---> 1 : 1
127.0.0.1 ---> 1 : 16777343
我不明白第一result..this犯規發生像eth#這樣的東西,但它與另一個名爲bond0的接口有關。這是什麼?
這看起來不像C :) –
ok減去reinterpret_cast部分... –
'cout'和'<<'? –