-
(long long) getInterfaceBytes { struct ifaddrs *ifa_list = 0, *ifa; if (getifaddrs(&ifa_list) == -1) { return 0; }
uint32_t iBytes = 0; uint32_t oBytes = 0;
for (ifa = ifa_list; ifa; ifa = ifa->ifa_next) { if (AF_LINK != ifa->ifa_addr->sa_family) continue;
if (!(ifa->ifa_flags & IFF_UP) && !(ifa->ifa_flags & IFF_RUNNING)) continue; if (ifa->ifa_data == 0) continue; /* Not a loopback device. */ if (strncmp(ifa->ifa_name, "lo", 2)) { struct if_data *if_data = (struct if_data *)ifa->ifa_data; iBytes += if_data->ifi_ibytes; oBytes += if_data->ifi_obytes; }复制代码
} freeifaddrs(ifa_list);
NSLog(@"\n[getInterfaceBytes-Total]%d,%d",iBytes,oBytes); return iBytes + oBytes; }