ifaddrs *myaddrs, *ifa;
sockaddr_in *s4;
int status;
char ip[64];
 
status = getifaddrs(&myaddrs);
if (status != 0)
   PrintLog("getifaddrs failed");
 
for (ifa = myaddrs; ifa != NULL; ifa = ifa->ifa_next)
{
   if (ifa->ifa_addr == NULL)
      continue;
   if ((ifa->ifa_flags & IFF_UP) == 0)
      continue;
     
   if (ifa->ifa_addr->sa_family == AF_INET)
   {
       s4 = (struct sockaddr_in *)(ifa->ifa_addr);
       if (inet_ntop(ifa->ifa_addr->sa_family, (void *)&(s4->sin_addr), ip, sizeof(ip)) == NULL)
          PrintLog("%s: inet_ntop failed", ifa->ifa_name);
   }
}
freeifaddrs(myaddrs);
Протестовано на MacOS Snow Leopard і Tiger.
 
Немає коментарів:
Дописати коментар