• 流量统计


    而是通过函数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网络编程的应该很简单.. 但最开始我找错了方向, 花了不少时间..

  • 相关阅读:
    使用EF进行简单的增删改查
    观察者模式(委托事件的小应用)
    lambda表达式和表达式树
    socket知识总结
    xml读写Demo
    winfrom DataGridView Demo
    6月26号.NET面试题(程序题部分)只要做懂这3道题肯定能脱离菜鸟称号!
    多线程与异步编程知识简单总结
    15年6月14号面试中没有回答出来的问题
    2020.5.15记一次阿里电话面试经历
  • 原文地址:https://www.cnblogs.com/zzxap/p/2175615.html
Copyright © 2020-2023  润新知