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/ ...
随机推荐
- paper 104: 彩色图像高速模糊的懒惰算法
工程及源代码:快速模糊.rar 图像模糊算法有很多种,我们最常见的就是均值模糊,即取一定半径内的像素值之平均值作为当前点的新的像素值,在一般的工业 ...
- java名词解释
依赖注入 DI 面向切面编程 AOP 简单java对象 POJO -- JavaBean(spring称呼) 企业级javabean EJB
- Silverlight 限制 规则输入(正整数或小数)的另一种“技巧”写法
今天上午纠结一个问题很久,silverlight TextBox限制用户规则输入,要求只能输入正整数或则小数,小数点只能有且只有一个 刚开始的时候就是想直接用keyDown事件里面来解决 voi ...
- java ftp下载文件
1.使用官方正规的jar commons-net-1.4.1.jar jakarta-oro-2.0.8.jar 注意:使用ftp从windows服务器下载文件和从linux服务器下载文件不一样 2. ...
- oracle 金额格式化
一般金额要显示成 XXX,XXX,XXX.XX的格式,可以这样做: to_char(column, 'FM999,999,999,990.00')
- #添加图片,最多只能上传9张.md
#添加图片,最多只能上传9张.md 前端页面: ```javascript <form id="imgForm" enctype="multipart/form-d ...
- 隐式意图Intent
在我们想往下一个页面传递数据时,要想到显式意图和隐式意图,显示意图用于内部活动跳转时比较方便,而隐式意图用于应用程序中外部活动的跳转时较为方便,在使用隐式意图时我们要想到清单文件 代码如下: < ...
- illustrator将图片转换成ai路径
窗口->图像描摹 第一选择模式:彩色 第二步:调整颜色的数值 最后点击工具栏上的扩展按钮转成路径 搞定~
- sql 函数的理解
CAST (expression AS data_type) 用于数据的转化 isnull(@s+',','select years,months,') 判断(@s+',')是否为空,注意点,即使(@ ...
- DSO、CUBE区别(覆盖、合计)
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...