iOS-网络流量统计
最近要做一个网络流量统计的功能。网上找了下,有直接可以用的。呵呵。
原理:通过函数getifaddrs来得到系统网络接口的信息,网络接口的信息, 包含在if_data字段中, 有很多信息, 但我现在只关心ifi_ibytes, ifi_obytes, 应该就是接收到的字节数和发送的字节数, 加起来就是流量了. 还发现, 接口的名字, 有en, pdp_ip, lo等几种形式, en应该是wifi, pdp_ip大概是3g或者gprs, lo是环回接口, 通过名字区分可以分别统计
直接上代码:
添加头
#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;
}
返回的结果为byte
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-网络流量统计相关推荐
- php怎么统计流量,PHP学习笔记:php网络流量统计系统
PHP学习笔记:php网络流量统计系统 说明:代码来源<PHP和MySQL Web应用开发>一书,还有就是代码有些是经过修改的,经过我的测验全部都可以用. 这里面ip地址显示的正常的,我电 ...
- 【总结】一些网络流量统计的网站及工具
DU METER V3.06 Build 192 汉化版 软件大小:924 KB 软件类别:网络工具 / 网络监测 运行环境:WinNet, WinXP, Win2K, NT, WinME, Win9 ...
- 网络流量统计using ADB
/proc/net/xt_qtaguid/stats 基本覆盖目前所有机型且统计流量全面 adb shell cat /proc/net/xt_qtaguid/stats | grep (uid#) ...
- linux 进程流量统计,Linux进程网络流量统计方法及实现
1 前言 在某些应用安全场景须要结合进程级网络链接.流入流出流量等数据直接分析出进程的异常.例如,在内网主机上是否存在持续恶意外传敏感数据的现象.在网络监控时发现服务器大量带宽被占用但不清楚由系统具体 ...
- linux网络流量统计,linux下网络流量监控统计
最近在做虚拟化迁入评估,其中很重要的一项就是流量的问题.现在部署一个工具和脚本用来统计服务器的网络流量. linux下监控流量的工具有很多,比如ifstat.iftop等. 个人还是喜欢ifstat, ...
- ifstat 网络流量统计工具
ifstat---实时报告接口状态,是一个网络流量监测程序,能查看网卡的流出和流入的字节. 简单描述:ifstat就像iostat/vmstat描述其它的系统状况一样,是一个统计网络接口活动状态的工具 ...
- Linux进程网络流量统计方法及实现
1 前言 在某些应用安全场景需要结合进程级网络连接.流入流出流量等数据直接分析出进程的异常.例如,在内网主机上是否存在持续恶意外传敏感数据的现象.在网络监控时发现服务器大量带宽被占用但不清楚由系统具体 ...
- java 网络流量统计_IP数据包的流量统计(JAVA语言)
如果不显示图片,或者出现排版错误,抽风,崩坏,节操丢失等一系列不正常情况,请点击下面链接观看,点我 IP数据包的流量统计(JAVA语言) 要求:编制程序,监控网络,捕获一段时间内网络上的IP数据包,按 ...
- iOS客户端流量统计
自己统计流量的话 需要判断是3G访问还是WIFI访问 用 NSURLProtocol 自定义一个这个 累计DATA就是下行流量 #include <arpa/inet.h> #includ ...
- Linux环境 网络流量统计/proc/net/dev和/proc/net/snmp
在Linux系统中,系统调用是操作系统提供给应用程序使用操作系统服务的重要接口,但同时也正是通过系统调用机制,操作系统屏蔽了用户直接访问系统内核的可能性.幸运的是Linux提供了LKM机制可以使我们在 ...
最新文章
- MIT警示“深度学习过度依赖算力”,研究三年算法不如用10倍GPU
- pandas统计缺失值的个数
- 天正暖通天圆地方在哪_2020位于太白山景区海拔3511米天圆地方景点就变成了很多人望而却步的地方_天圆地方-评论-去哪儿攻略...
- 在ASP.NET使用javascript的一点小技巧(转www.chinacs.net 中文C#技术站 )
- 设计灵感|如果你喜欢多彩的配色搭配!看这里!
- 常用Python标准库对象速查表(1)
- Typora如何设置图片的默认保存路径
- 【滑动窗口】leetcode1456:定长子串中元音的最大数目
- 我们和优秀工程师的差距在哪儿
- 【转载】高速电路设计中的电源地
- python简单代码恶搞-一个可以套路别人的python小程序实例代码
- 联邦学习后门攻击代码阅读——backdoors101
- 1KB文件夹快捷方式病毒清除(转)
- 如何使用FFmpeg命令处理音视频
- 001.学习Python之-设置你的操作系统的环境变量,以便可以轻松进入 Python 环境
- cdr 表格自动填充文字_当文字内容太多excel单元格盛不下应该怎么做
- stm32入门(四): 串口
- Enhancer和MethodInterceptor的需要导入的jar
- FCKeditor 介绍
- Python-批处理调整音频文件的音量大小