http://xlover.iteye.com/blog/1358301

最近在测试中经常要去查看一个进程的流量。所以了解了一下这方面的知识!在此总结一下

Android流量监控主要是有两种方法:

一.抓包

这个方法获取的流量更加精准,但是难度应该大点。本人没有了解过,所以在此略过。

二.读取linux本地文件

Android是基于linux的一个操作系统。

在Android中,你用Root Explorer去查看系统文件的话,与流量监控相关的会有这么几个文件

/proc/net/dev这个文件中具体记录的暂时不是非常清楚,可能是整个系统的一个流量情况。

/proc/uid_stat/%d" 和"/proc/uid_stat/%d" %d为进程的UID。这个文件里只有两项数据tcp_rcv和tcp_snd。

看命名大家应该就能看出代表什么,一个代表总的接受字节数,一个代表总的发送字节数。

这两个文件为非标准linux内核文件,由android内核层/kernel/net/Socket.c 的__sock_sendmsg函数负责写入, 用户层套接字通信在内核层最终会调用此函数 (包括本地套接字和网络套接字)。

而Android在2.3之前是没有封装响应的流量监控API的。在2.3之后呢,把数据流量监控封装到了Android.net.TrafficStats类中。其原理就是读取上文提到的那几处文件。其中有的方法也是读取的别的文件。

其主要的方法

static long getMobileRxBytes()//获取通过Mobile连接收到的字节总数,但不包含WiFi
static long getMobileRxPackets()//获取Mobile连接收到的数据包总数
static long getMobileTxBytes()//Mobile发送的总字节数
static long getMobileTxPackets()//Mobile发送的总数据包数
static long getTotalRxBytes()//获取总的接受字节数,包含Mobile和WiFi等
static long getTotalRxPackets()//总的接受数据包数,包含Mobile和WiFi等
static long getTotalTxBytes()//总的发送字节数,包含Mobile和WiFi等
static long getTotalTxPackets()//发送的总数据包数,包含Mobile和WiFi等
static long getUidRxBytes(int uid)//获取某个网络UID的接受字节数
static long getUidTxBytes(int uid) //获取某个网络UID的发送字节数

返回类型均为long型,如果返回等于-1代表 UNSUPPORTED 当前设备不支持统计,可能是因为系统版本低。

getUidRxBytes(int uid)此方法就是根据uid去查找系统中响应的文件,并读取响应的值。

这其中可能遇到的问题是:没有wifi的情况下,各进程获得的getUidRxBytes之和与getMobileRxBytes所返回的值不相等。原因在于getUidRxBytes使读取上文提到的文件。而getMobileRxBytes读取的是sys/class/net/rmnet0/statistics/rx_bytes 和sys/class/net/ppp0/statistics/rx_bytes 。这俩文件。而且在getUidRxBytes返回的值中包含了本地通信的流量,比如本地进程间的socket通信。所以这两个值加起来有所出入!

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

android如何开发流量监控软件相关推荐

  1. Android流量监控论文,Android平台流量监控软件的设计与实现

    摘要: Android手机和3G网络的迅速普及,让越来越多的手机用户有条件使用Android系统的手机上网.在这样的现状下,流量超额使用的情况和软件恶意联网的情况给用户带来了经济上与精神上的损失.为解 ...

  2. android流量监控软件设计与实现,Android平台流量监控软件的设计与实现

    摘要: Android手机和3G网络的迅速普及,让越来越多的手机用户有条件使用Android系统的手机上网.在这样的现状下,流量超额使用的情况和软件恶意联网的情况给用户带来了经济上与精神上的损失.为解 ...

  3. android流量监控软件设计与实现,基于android平台的流量监控系统的设计与实现

    摘要: 为了解决流量超额使用,恶意流量吸费的非法插件以及软件恶意联网的问题,帮助用户安全放心使用手机,本文设计并实现了一款基于Android平台的流量监控系统. 本文以Android系统为平台,分别从 ...

  4. centos7自带流量监控软件iftop

    2019-09-02 centos7自带流量监控软件iftop 安装: 本地包没有iftop软件包,需要安装第三方软件源 yum install epel-release 安装完成之后,清理yum缓存 ...

  5. 推荐几款比较好的手机流量监控软件

    推荐几款比较好的手机流量监控软件 目前的手机,用途是越来越大,上网,QQ.微博.微信.各种手机版的网络应用都需要网络的支持.尽管各种手机网络应用都一再宣称不消耗流量,免流量等等,不过相信很多人在月中甚 ...

  6. 网络流量监控软件怎样实现

    随着网络的发展,越来越多的人使用网络,对带宽的需求也就越来越大.这样,使用流量监控软件对网络流量进行监控管理,非常有必要. 网络流量控制现状 据统计,P2P数据流量占因特网总流量达60%,并且在用户总 ...

  7. 网络流量监控软件——MRTG(Multi Router Traffic Grapher)

    一名真正合格的网管所做的工作不应该仅仅局限在服务器故障发生后,亡羊补牢的工作虽然不算迟,但也会造成一定程度的损失.那么如何有效的监视服务器的状态,在第一时间发现服务器故障及异常甚至在没出现问题前进行预 ...

  8. NetWorker Pro for mac(网络流量监控软件)

    NetWorker Mac版是一款轻量级的网络工具,NetWorker Mac版可以让你在菜单栏上显示当前的网络上传下载速度,你可以在速度和流量两种模式之间切换,你也可以选择不同的网络模式来进行监测. ...

  9. 局域网流量监控软件以及其实现方式

    是否觉得网络流量不够用?申请多少就是不够,流量都去了哪里?针对这些问题,什么方法能解决?局域网流量监控软件,目前比较专业的对流量进行监控管理的软件,帮助您解决问题> 一.为什么要使用局域网流量监 ...

最新文章

  1. java new string 图_Java中String直接赋字符串和new String的一些问题
  2. 《大话数据结构》第3章 线性表 3.8.2 单链表的删除
  3. ReactiveCocoa的使用方法
  4. 关于UIView的autoresizingMask属性的研究
  5. Approximate Nearest Neighbors.接近最近邻搜索
  6. martin_pthread_pool
  7. DP项目计算机科学,动态规划DynamicProgrammingDP-天津大学计算机科学与技术学院.PPT...
  8. 《学习OpenCV》课后习题解答(第四章)(仅供参考)(不断更新)
  9. leetcode—17.递归题目python解答
  10. 阶段3 2.Spring_06.Spring的新注解_5 spring的新注解-PropertySource
  11. 局域网中的通信协议及选择简述。
  12. LightOJ-1336
  13. easyUI分页中,如何实现页面跳转,再返回时,仍然到跳转前页数。(含页面显示条数)
  14. 《python数据分析与挖掘实战》笔记第3章
  15. jbpm3\jbpm4_在jBPM中支持高级用户交互模式
  16. 彻底卸载并重装Anaconda环境与Python的方法
  17. android支持gif图片格式,Android 支持Gif动态图 的imagview
  18. Verilog设计(二):分频电路设计
  19. (十)基于Linux算时差——超声波测距原理及代码实现
  20. flash的坐标系详解

热门文章

  1. 2020.10.29--AI--3D字体海报设计平面设计、扭曲变换花朵制作、混合工具毛绒爱心制作
  2. mysql进程daemon_守护进程详解及创建,daemon()使用
  3. MinGW下载与配置
  4. matlab数据采集柜,MATLAB数据采集工具箱
  5. Robomongo连接远程MongoDB数据库
  6. python怎么识别log函数_log函数图像_函数图像_python函数图像 - 云+社区 - 腾讯云
  7. 飞信发送手机短信接口
  8. 金融时间序列分析:7. MA滑动平均模型
  9. dwd明细粒度事实层设计
  10. 【小样本分割 2020 TPAMI 】PFENet