zoukankan      html  css  js  c++  java
  • wifi 3G 流量

    //

    //  flowStatis.c

    //  Test

    //

    //  Created by iXcoder on 12-7-19.

    //  Copyright (c) 2012 iXcoder. All rights reserved.

    //

    #import <Foundation/Foundation.h>

    #include <stdio.h>

    #include <ifaddrs.h>

    #include <sys/socket.h>

    #include <net/if.h>

    //3G流量统计

    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;

    }

    //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;

            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;

    }

    将流量值写入文件,或SQLite,或使用CoreData,方便按天、周、月统计。

  • 相关阅读:
    【记录】Mybatis-Generator 数据层代码生成器,自动生成dao类,mapper,pojo类
    【记录】logstash 的filter 使用
    【转载】windows 开启 nginx 监听80 端口 以及 禁用 http 服务后,无法重启 HTTP 服务,提示 系统错误 123,文件目录、卷标出错
    【报错】解决logstash tracking_column not found in dataset. {:tracking_column=>"updated_time"}问题
    【记录】elasticsearch 注解
    index read-only
    wget下载阿里云RDS备份集
    mysqlbinlog相关
    es安装elasticsearch-sql插件
    elastichd安装部署
  • 原文地址:https://www.cnblogs.com/qq378829867/p/3777833.html
Copyright © 2011-2022 走看看