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

    而是通过函数getifaddrs来得到系统网络接口的信息..比如
    #include <ifaddrs.h>
    #include <sys/socket.h>
    #include <net/if.h>

    - (void) getInterfaceBytes 
    {
        struct ifaddrs *ifa_list = 0, *ifa;
        if (getifaddrs(&ifa_list) == -1)
        {
            return;
        }

        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);
    }
    网络接口的信息, 包含在if_data字段中, 有很多信息, 但我现在只关心ifi_ibytes, ifi_obytes, 应该就是接收到的字节数和发送的字节数, 加起来就是流量了. 
    还发现, 接口的名字, 有en, pdp_ip, lo等几种形式, en应该是wifi, pdp_ip大概是3g或者gprs, lo是环回接口, 通过名字区分可以分别统计..
    getifaddrs更详细的用法我没有再看了..
     这些对于熟悉unix网络编程的应该很简单.. 但最开始我找错了方向, 花了不少时间..

  • 相关阅读:
    指针符号的优先级
    逆序链表建立和输出
    typedef关键字编写步骤
    CasePlayer2-嵌入式软件静态解析工具
    嵌入式软件测试工具和测试方法
    单元测试必要性
    基于winAMS、CasePlayer2嵌入式软件单元测试
    嵌入式软件测试软件--winAMS支持芯片
    基于模型开发 Back-to-Back测试统合工具-MC-Verifier
    单元测试工具-winAMS
  • 原文地址:https://www.cnblogs.com/zzxap/p/2175615.html
Copyright © 2011-2022 走看看