iOS获取WIFI流量及GPRS流量

2020-05-14  本文已影响0人  CH3CH2OH

需要导入<ifaddrs.h>  <sys/socket.h>  <net/if.h>

+ (NSString *)getGprs3GFlowIOBytes{

    structifaddrs*ifa_list =0, *ifa;

    if(getifaddrs(&ifa_list) == -1)

    {

        return0;

    }

    uint32_tiBytes =0;

    uint32_toBytes =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;

        //3G或者GPRS

        if(!strcmp(ifa->ifa_name,"pdp_ip0"))

        {

            structif_data*if_data = (structif_data*)ifa->ifa_data;

            iBytes += if_data->ifi_ibytes;

            oBytes += if_data->ifi_obytes;

//            NSLog(@"%s :iBytes is %d, oBytes is %d",

//                  ifa->ifa_name, iBytes, oBytes);

        }

    }

    freeifaddrs(ifa_list);

    uint32_tbytes =0;

    bytes = iBytes + oBytes;

    //将bytes单位转换

    if(bytes <1024)        // B

    {

        return[NSStringstringWithFormat:@"%dB", bytes];

    }

    elseif(bytes >=1024&& bytes <1024*1024)    // KB

    {

        return[NSStringstringWithFormat:@"%.1fKB", (double)bytes /1024];

    }

    elseif(bytes >=1024*1024&& bytes <1024*1024*1024)    // MB

    {

        return[NSStringstringWithFormat:@"%.2fMB", (double)bytes / (1024*1024)];

    }

    else    // GB

    {

        return[NSStringstringWithFormat:@"%.3fGB", (double)bytes / (1024*1024*1024)];

    }

}

+ (NSString *)getGprsWifiFlowIOBytes {

    structifaddrs*ifa_list =0, *ifa;

    if(getifaddrs(&ifa_list) == -1) {

        return0;

    }

    uint32_tiBytes =0;

    uint32_toBytes =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;

        //Wifi

        if(strncmp(ifa->ifa_name,"lo",2)) {

            structif_data*if_data = (structif_data*)ifa->ifa_data;

            iBytes += if_data->ifi_ibytes;

            oBytes += if_data->ifi_obytes;

//            NSLog(@"%s :iBytes is %d, oBytes is %d", ifa->ifa_name, iBytes, oBytes);

        }

    }

    freeifaddrs(ifa_list);

    uint32_tbytes =0;

    bytes = iBytes+oBytes;

    NSLog(@"%d",bytes);

    //将bytes单位转换

    if(bytes <1024)        // B

    {

        return[NSStringstringWithFormat:@"%dB", bytes];

    }

    elseif(bytes >=1024&& bytes <1024*1024)    // KB

    {

        return[NSStringstringWithFormat:@"%.1fKB", (double)bytes /1024];

    }

    elseif(bytes >=1024*1024&& bytes <1024*1024*1024)    // MB

    {

        return[NSStringstringWithFormat:@"%.2fMB", (double)bytes / (1024*1024)];

    }

    else    // GB

    {

        return[NSStringstringWithFormat:@"%.3fGB", (double)bytes / (1024*1024*1024)];

    }

}

上一篇 下一篇

猜你喜欢

热点阅读