美文网首页
iOS获取WIFI流量及GPRS流量

iOS获取WIFI流量及GPRS流量

作者: CH3CH2OH | 来源:发表于2020-05-14 18:10 被阅读0次

需要导入<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)];

    }

}

相关文章

  • iOS获取WIFI流量及GPRS流量

    需要导入 + (NSString *)g...

  • iOS 有关WIFI讯息获取

    iOS 有关WIFI讯息获取 流量监测 获取wifi地址 获取wifi名称 从手机状态栏获取当前网络状态

  • iOS ASIHTTPRequest流量监控

    只有在WWAN(GPRS/Edge/3G)网络下,ASIHTTPRequest的流量监控才能起效,在WIFI网络下...

  • ASI 流量监控

    只有在WWAN(GPRS/Edge/3G)网络下,ASIHTTPRequest的流量监控才能起效,在WIFI网络下...

  • 4G(LTE)/ 3G(UMTS)/2G(EDGE/GPRS)

    4G流量:4G流量是在4G网络下消耗的流量。GPRS流量:GPRS流量是在2G网络下消耗的流量。 LTE CAT4...

  • 获取wifi 4G IP地址

    WiFi 以及 GPRS 获取 ip 地址 public String getIp(){//获取wifi服务W...

  • 联机共读11期-3.9-老王

    流量池第九章:搜索入口的大流量获取 1.除了常见的渠道投放获取流量,机遇搜索渠道的广告及优化,也是企业快速获取流量...

  • 第九章 数字广告(中)搜索入口的大流量获取

    除了利用常见的投放渠道获取流量,基于搜索渠道的广告及优化,也是企业快速获取流量的低成本入口。 一、SEO:大流量的...

  • 流量池思维

    流量思维:获取流量 通过流量变现 流量池思维:要获取流量 通过流量的存续运营 再获取更多的流量 移动营销的关键就是...

  • 流量池第九章

    除了利用常见的投放渠道获取流量,基于搜索渠道的广告及优化,也是企业快速获取流量的低成本入口。 离流量变现更近的搜索...

网友评论

      本文标题:iOS获取WIFI流量及GPRS流量

      本文链接:https://www.haomeiwen.com/subject/cjrxohtx.html