iOS 获取网络流量

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(getInternet) userInfo:nil repeats:YES];

[timer fireDate];


- (void)getInternet {
    long long heheeh = [self getInterfaceBytes];
   
    NSLog(@"heheeh:-- %lld", heheeh);
}

/*获取网络流量信息*/

- (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;
}

你可能感兴趣的:(iOS 获取网络流量)