六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 49|回复: 0

android 流量监控类TrafficStas

[复制链接]

升级  30%

3

主题

3

主题

3

主题

童生

Rank: 1

积分
15
 楼主| 发表于 2013-1-26 13:57:13 | 显示全部楼层 |阅读模式
TrafficStats类存在好几个查看流量的方法
getMobileRxBytes()
getTotalRxBytes()
getUidRxBytes() && getUidTxBytes函数
测试时发现各进程getUidRxBytes的值的总值与MobileRxBytes不一致
查看了下getUidRxBytes() && getUidTxBytes函数native 代码发现此方法通过读取
"/proc/uid_stat/%d/tcp_rcv" 和"/proc/uid_stat/%d/tcp_snd"文件来获取流量 ,其中%d为进程uid。
这两个文件为非标准linux内核文件,由android内核层/kernel/net/Socket.c 的__sock_sendmsg函数负责写入,
用户层套接字通信在内核层最终会调用此函数 (包括本地套接字和网络套接字),
因此根据TrafficStats.getUidRxBytes() && getUidTxBytes获取的流量既包括了网络流量亦包括了本地流量

而MobileRxBytes
读取的sys/class/net/rmnet0/statistics/rx_bytes
读取的sys/class/net/ppp0/statistics/rx_bytes
此为linux标准内核,略过
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表