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/ ...
随机推荐
- js实现继承的五种方式
function Parent(firstname) { this.fname=firstname; ; this.sayAge=function() { console.log(this.age); ...
- AJAX-----16HTML5实现大文件切割上传
2点多接了个电话导致失眠,没办法,跑起来接着板砖了...... 废话不多说,直接走码... <!DOCTYPE html> <html lang="en"> ...
- Linux开机流程
在开机时,由于80x86的特性CS(Code Segment)这个寄存器中放的都是1,而IP(Instruction Pointer)这个寄存器中全部放着0,换句话说,CS=FFFF而IP=0000. ...
- 十五、Java基础---------集合框架体系以及List
在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可 ...
- getopt解析命令行参数一例:汇集多个服务器的日志
高效工作的一个诀窍就是尽可能自动化, 简便化. 比如, 公司里, 要搜索多个集群下的应用日志来排查问题, 需要使用 pssh: pssh -i -h api_hangzhou.iplist " ...
- PHP获取毫秒时间戳,利用microtime()函数
PHP获取毫秒时间戳,利用microtime()函数 php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,借助此函数,可以很容易定义一个返回毫秒数的函数.php的毫秒是没有默认 ...
- jQuery 简单过滤选择器
<!DOCTYPE HTML> <html> <head> <title> 使用jQuery基本过滤选择器 </title> <scr ...
- [课程设计]Scrum 2.5 多鱼点餐系统开发进度(下单一览页面-菜式添加框架设计)
Scrum 2.5 多鱼点餐系统开发进度 (下单一览页面-菜式添加框架设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...
- NSISの堆栈操作
一 .堆栈 堆栈是 NSIS 维护的一堆数据,你可以根据需要往堆栈中存入任意大小的数据(as big as you like),所以你可以向堆栈中推入或读取数据,堆栈只有一个,堆栈遵守 LIFO (后 ...
- easylui datagrid 动态生成列
function load(sdate) { $.getJSON("workorder/statistics.do", { sdate : sdate+'-01' }, funct ...