#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)];

}

}

ios统计流量代码的更多相关文章

  1. iOS 统计项目代码行数

    最近去面试 对面的"他" 问我其中一个问题 是 "你的项目代码量是多少?" 当时的确有点蒙圈, 我可以从整个项目打包的角度考虑项目大小,我还真没想过到底我的项目 ...

  2. iOS开发_统计xcode代码行数

    如果要统计ios开发代码,包括头文件的,终端命令进入项目目录下,命令如下 find . -name "*.m" -or -name "*.h" -or -nam ...

  3. ASP.net中网站访问量统计方法代码(在线人数,本月访问,本日访问,访问流量,累计访问)

    一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间 (IP_DateTime),些表的信 ...

  4. IOS开发 统计XCODE 代码行数

    如果要统计ios开发代码,包括头文件的,终端命令进入项目目录下,命令如下 find . -name "*.m" -or -name "*.h" -or -nam ...

  5. iOS - Xcode项目统计总代码行数

    最新公司需要把项目代码量统计一下,第一时间找到Xcode插件管理工具Alcatraz,查找插件ZLXCodeLine,这是一个快速统计Xcode工程项目代码量的插件,好像已经不支持Alcatraz安装 ...

  6. iOS - 统计代码行数

    终端 -> 进入文件夹 查看每一行的行数 find . -name "*.m" -or -name "*.h" -or -name "*.xib ...

  7. iOS 统计Xcode整个工程的代码行数

    小技巧5-iOS 统计Xcode整个工程的代码行数 1.打开终端 2.cd 空格 将工程的文件夹拖到终端上,回车,此时进入到工程的路径 此时已经进入到工程文件夹下 3.运行指令 a. find . - ...

  8. 【java IO File】统计项目代码总共多少行

    统计项目代码总共有多少行 思想: 1.首先将不需要迭代的文件夹,保存在集合中,不满足的就是需要迭代的文件夹 2.将需要进行统计行数的代码文件保存在集合中,满足的就是需要计算文件行数的文件 3.迭代方法 ...

  9. VS2012 利用正则统计项目代码行数

    原文:VS2012 利用正则统计项目代码行数 #开头和/开头或者空行都不计入代码量,  搜索出来以后最后一行就是代码行数了:

随机推荐

  1. 【Linux】tcp缓冲区大小的默认值、最大值

    Author:阿冬哥 Created:2013-4-17 Blog:http://blog.csdn.net/c359719435/ Copyright 2013 阿冬哥 http://blog.cs ...

  2. Murano为镜像包添加Root用户密码

    1. 安装dib-utils Dib Utils 是 diskimage-builder 工程的一部分,但是他们也用于 diskimage-builder 工程外部. 因为基于云的磁盘空间已经溢出,推 ...

  3. MATLAB字符串处理

    字符串处理 MATLAB中字符串用单引号   如果字符串中存在单引号,要使用两个单引号. length()元素个数 (1)字符串的执行 格式:eval(s) s表示字符串 abs()和double() ...

  4. MachineLearningPreface

    机器学习(包括监督学习, 无监督学习, 半监督学习与强化学习) 监督学习(包括分类与线性回归) 分类(标签的值为散列的"yes"或者"no", "go ...

  5. 使用DOS批处理更改IP地址

    有时候电脑在家需要自动获取IP,在公司需要手动填写IP,改来改去很麻烦,于是做一个批处理一键修改很方便: @echo off cls color 0A @echo off echo. echo === ...

  6. Java基于jdbc链接mysql数据库步骤示列

    用JDBC来链接MYSQL数据库,基本步骤都大同小异,只不过不同的数据库之间的URL地址有些不同.其基本步骤可分为以下几点: 1.加载相应的数据库的JDBC驱动程序. 2.利用驱动管理器DriverM ...

  7. intellijidea课程 intellijidea神器使用技巧 4-1 重构

    1 重构变量 shift + F6 将选中的变量以及用到该变量的部分全部修改 2 重构方法 Ctrl  + F6 重构变量

  8. SublimeText插件autoprefixer : css 添加前续

    /* 使用前 */ body { background: linear-gradient(to bottom, #DADADA, #000); } p a { -webkit-border-radiu ...

  9. 用Python爬虫对豆瓣《敦刻尔克》影评进行词云展示

    最近很想看的一个电影,去知乎上看一下评论,刚好在学Python爬虫,就做个小实例. 代码基于第三方修改 原文链接  http://python.jobbole.com/88325/#comment-9 ...

  10. 厌烦了写findViewById 试试ButterKnife吧

    先上官网 http://jakewharton.github.io/butterknife/  和 https://github.com/JakeWharton/butterknife 配置开发环境 ...