zoukankan      html  css  js  c++  java
  • ios统计流量代码

    #include <ifaddrs.h>  

    #include <sys/socket.h>  

    #include <net/if.h>

     

    1.3G/GPRS流量统计

    int getGprs3GFlowIOBytes()

    {

        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;

            

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

            {

                struct if_data *if_data = (struct if_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);

        

        return iBytes + oBytes;

    }

    2.WIFI流量统计功能

    - (long long int)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;

                

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

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

            }

        }

        freeifaddrs(ifa_list);

        

        return iBytes+oBytes;  

    }

    转换方法

    NSString *bytesToAvaiUnit(int bytes)

    {

        if(bytes < 1024)     // B

        {

            return [NSString stringWithFormat:@"%dB", bytes];

        }

        else if(bytes >= 1024 && bytes < 1024 * 1024) // KB

        {

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

        }

        else if(bytes >= 1024 * 1024 && bytes < 1024 * 1024 * 1024)   // MB

        {

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

        }

        else    // GB

        {

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

        }

    }

  • 相关阅读:
    SQL 2008 数据库只读 修改
    java List 简单使用
    鼠标右键菜单 删除
    SQL distinct
    日系插画学习笔记(五):日系角色脸部画法-1头部
    日系插画学习笔记(四):基础人体结构
    日系插画学习笔记(三):光影与结构
    日系插画学习笔记(二):结构与透视
    日系插画学习笔记(一):SAI软件基础
    spring mvc 静态资源版本控制
  • 原文地址:https://www.cnblogs.com/chenhaosuibi/p/4243773.html
Copyright © 2011-2022 走看看