iOS流量监控
http://code4app.com/snippets/one/iOS%E6%B5%81%E9%87%8F%E7%9B%91%E6%8E%A7/5020ba7a6803fae325000000
1.能够检测iOS的WIFI,3G以及GPS的流量。
-(
void
)checkNetworkflow{
struct
ifaddrs
*ifa_list =
0
, *ifa;
if
(getifaddrs(&ifa;_list) == -
1
)
{
return
;
}
uint
3
2
_t iBytes =
0
;
uint
3
2
_t oBytes =
0
;
uint
3
2
_t allFlow =
0
;
uint
3
2
_t wifiIBytes =
0
;
uint
3
2
_t wifiOBytes =
0
;
uint
3
2
_t wifiFlow =
0
;
uint
3
2
_t wwanIBytes =
0
;
uint
3
2
_t wwanOBytes =
0
;
uint
3
2
_t wwanFlow =
0
;
struct timeval time ;
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.
// network flow
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;
allFlow = iBytes + oBytes;
time = if_data->ifi_lastchange;
}
//wifi flow
if
(!strcmp(ifa->ifa_name, "en
0
"))
{
struct
if_data
*if_data = (struct
if_data
*)ifa->ifa_data;
wifiIBytes += if_data->ifi_ibytes;
wifiOBytes += if_data->ifi_obytes;
wifiFlow = wifiIBytes + wifiOBytes;
}
//3G and gprs flow
if
(!strcmp(ifa->ifa_name, "pdp_ip
0
"))
{
struct
if_data
*if_data = (struct
if_data
*)ifa->ifa_data;
wwanIBytes += if_data->ifi_ibytes;
wwanOBytes += if_data->ifi_obytes;
wwanFlow = wwanIBytes + wwanOBytes;
}
}
freeifaddrs(ifa_list);
}
#include <arpa/inet.h>
#include <net/if.h>
#include <ifaddrs.h>
#include <net/if_dl.h>
+ (
NSArray
*)getDataCounters
{
BOOL
success;
struct
ifaddrs
*addrs;
const
struct
ifaddrs
*cursor;
const
struct
if_data
*networkStatisc;
int
WiFiSent
=
0
;
int
WiFiReceived
=
0
;
int
WWANSent
=
0
;
int
WWANReceived
=
0
;
NSString
*name=[[[
NSString
alloc
]init]autorelease];
success = getifaddrs(&addrs;) ==
0
;
if
(success)
{
cursor = addrs;
while
(cursor !=
NULL
)
{
name=[
NSString
stringWithFormat
:
@"%s"
,cursor->ifa_name];
NSLog(
@"ifa_name %s == %@\n"
, cursor->ifa_name,name);
// names of interfaces: en0 is WiFi ,pdp_ip0 is WWAN
if
(cursor->ifa_addr->sa_family == AF_LINK)
{
if
([name
hasPrefix
:
@"en"
])
{
networkStatisc = (
const
struct
if_data
*) cursor->ifa_data;
WiFiSent+=networkStatisc->ifi_obytes;
WiFiReceived+=networkStatisc->ifi_ibytes;
NSLog(
@"WiFiSent %d ==%d"
,
WiFiSent
,networkStatisc->ifi_obytes);
NSLog(
@"WiFiReceived %d ==%d"
,
WiFiReceived
,networkStatisc->ifi_ibytes);
}
if
([name
hasPrefix
:
@"pdp_ip"
])
{
networkStatisc = (
const
struct
if_data
*) cursor->ifa_data;
WWANSent+=networkStatisc->ifi_obytes;
WWANReceived+=networkStatisc->ifi_ibytes;
NSLog(
@"WWANSent %d ==%d"
,
WWANSent
,networkStatisc->ifi_obytes);
NSLog(
@"WWANReceived %d ==%d"
,
WWANReceived
,networkStatisc->ifi_ibytes);
}
}
cursor = cursor->ifa_next;
}
freeifaddrs(addrs);
}
return
[
NSArray
arrayWithObjects
:[
NSNumber
numberWithInt
:WiFiSent],
[
NSNumber
numberWithInt
:WiFiReceived],
[
NSNumber
numberWithInt
:WWANSent],
[
NSNumber
numberWithInt
:WWANReceived],
nil
];
}
iOS流量监控的更多相关文章
- iOS流量精灵完结版
从一开始的激动,到现在的三期完结持续了将近三个半月时间,心态也开始变的坦然. 开发期间没有兑现自己的若言,没有写下所有的感悟和困难.我没有借口可言,唯一能说的只能说自己太懒....哈哈 总体来说流量监 ...
- 《UNIX/Linux网络日志分析与流量监控》新书发布
本书从UNIX/Linux系统的原始日志(Raw Log)采集与分析讲起,逐步深入到日志审计与计算机取证环节.书中提供了多个案例,每个案例都以一种生动的记事手法讲述了网络遭到入侵之后,管理人员开展系统 ...
- 《Unix/Linux网络日志分析与流量监控》获2015年度最受读者喜爱的IT图书奖
<Unix/Linux网络日志分析与流量监控>获2015年度最受读者喜爱的IT图书奖.刊登在<中华读书报>( 2015年01月28日 19 版) 我的2015年新作刊登在< ...
- 《Unix/Linux日志分析与流量监控》书稿完成
<Unix/Linux日志分析与流量监控>书稿完成 近日,历时3年创作的75万字书稿已完成,本书紧紧围绕网络安全的主题,对各种Unix/Linux系统及网络服务日志进行了全面系统的讲解,从 ...
- linux系统CPU,内存,磁盘,网络流量监控脚本
前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...
- 从零开始学习iftop流量监控(找出服务器耗费流量最多的ip和端口)
一.iftop是什么 iftop是类似于top的实时流量监控工具. 作用:监控网卡的实时流量(可以指定网段).反向解析IP.显示端口信息等 官网:http://www.ex-parrot.com/~p ...
- Linux服务器---流量监控bandwidthd
Bandwidthd Bandwidthd是一款免费的流量监控软件,它可以用图标的方式展现出网络流量行为,并且可区分出ftp.tcp等各种协议的流量. 1.安装一些依赖软件 [root@localho ...
- vue table中使用多选的问题(翻页后如何保存已选项),联动echarts图表实现流量监控
流量监控项目需求: 根据表格数据,添加多选功能,默认全选,根据已选项更新图表视图 1.表格需要多选 2.要联动图表,所以关键是要利用表格多选的触发回调函数 vue table中使用多选: 很简单,只需 ...
- linux 网络和流量监控
1.流量监控 工具iptraf 安装:sudo apt-get install iptraf 运行:sudo iptraf 2.网络监控扫描 参考:https://www.cnblogs.com/ ...
随机推荐
- BJFU 1057
描述 斐波那契额数列,我们都知道.现在qingyezhu想求斐波那契的某项值对2的某次方的结果.你可以帮一下他吗?他好可怜哦!计算了N的N次方次都错了,也挨了ben大哥的N的N次方次的训了.我想你是个 ...
- 关于Block的copy和循环引用的问题
http://blog.csdn.net/felix9/article/details/9619313 在实际开发中,发现使用Block有着比delegate和notification更简洁的优势.于 ...
- 企业信息系统——CRM
客户关系管理系统(Customer Relationship Management)将客户看作是企业的一项重要资产,客户关怀是CRM的中心,其目的是与客户建立长期和有效的业务关系,在与客户的每个“接触 ...
- HTML5 UI框架Kendo UI Web教程:创建自定义组件(三)
Kendo UI Web包 含数百个创建HTML5 web app的必备元素,包括UI组件.数据源.验证.一个MVVM框架.主题.模板等.在前面的2篇文章<HTML5 Web app开发工具Ke ...
- linux线程的实现【转】
转自:http://www.cnblogs.com/zhaoyl/p/3620204.html 首先从OS设计原理上阐明三种线程:内核线程.轻量级进程.用户线程 内核线程 内核线程就是内核的分身,一个 ...
- [转] GitHub上README.md教程
点击阅读原文 最近对它的README.md文件颇为感兴趣.便写下这贴,帮助更多的还不会编写README文件的同学们. README文件后缀名为md.md是markdown的缩写,markdown是一种 ...
- ios html5 网页取消默认样式
ios的的默认样式修改成扁平化的样式 重要的一句css -webkit-appearance: none; 将样式清除 单数会出现将raido的选择按钮也会消失 所以需要对radio的样式进行重新 ...
- angular之控制器(0)
一.控制器的含义 在angularJS中,controlle是一个javascript函数/类,用于操作作用域中,各个对象的初始状态以及相应的行为 二.控制器的作用 1. 控制 AngularJS 应 ...
- 通过HWND获得CWnd指针
cwnd 又为计算机网络中拥塞窗口(congestion window)的简写.拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化.发送方让自己的发送窗口还可能小于拥塞窗口. CWnd是MFC窗口类 ...
- C语言位操作(转)
http://www.cnblogs.com/cpoint/category/524132.html