通过读取 /proc/self/net/dev 或者 /proc/net/dev 来得到应用程序流量统计.
获取单个APP流量的方法目前Android没有提供API,但可以同抓包来分析得到pid,从而确定是哪个APP产生的流量。
限制APP访问网络可以用iptables脚本来做到,DroidWallhttp://code.google.com/p/droidwall/ 用的就是iptables脚本+白名单来控制网络访问的。仅是通过/proc/net/dev读取其中的数据.(转载)
#include
#include
#include
void skipline(FILE *f)
{
int ch;
do {
ch = getc(f);
} while ( ch != 'n' && ch != EOF );
}
int main(int argc, char *argv[])
{
FILE *pnd;
char buffer[BUFSIZ];
char *interface;
struct ifinfo {
char name[8];
unsigned int r_bytes, r_pkt, r_err, r_drop, r_fifo, r_frame;
unsigned int r_compr, r_mcast;
unsigned int x_bytes, x_pkt, x_err, x_drop, x_fifo, x_coll;
unsigned int x_carrier, x_compr;
} ifc;
unsigned long long bin, bout, lbin, lbout;
int first;
if ( argc != 2 ) {
fprintf(stderr, "Usage: %s interfacen", argv[0]);
exit(1);
}
interface = argv[1];
first = 1;
lbin = 0; lbout = 0;
while ( 1 ) {
pnd = fopen("/proc/net/dev", "r");
if ( !pnd ) {
fprintf(stderr, "%s: /proc/net/dev: %s", argv[0], strerror(errno));
exit(1);
}
/* Skip header */
skipline(pnd);
skipline(pnd);
/* Get interface info */
do {
if ( fscanf(pnd, " %6[^:]:%u %u %u %u %u %u %u %u %u %u %u %u %u %u %u",
&ifc.name,
&ifc.r_bytes, &ifc.r_pkt, &ifc.r_err, &ifc.r_drop,
&ifc.r_fifo, &ifc.r_frame, &ifc.r_compr, &ifc.r_mcast,
&ifc.x_bytes, &ifc.x_pkt, &ifc.x_err, &ifc.x_drop,
&ifc.x_fifo, &ifc.x_coll, &ifc.x_carrier, &ifc.x_compr)
!= 16 ) {
exit(200);
}
skipline(pnd);
} while ( strcmp(ifc.name, interface) );
bin = ifc.r_bytes + (lbin & ~0xffffffffULL);
bout = ifc.x_bytes + (lbout & ~0xffffffffULL);
if ( bin < lbin )
bin += (1ULL << 32);
if ( bout < lbout )
bout += (1ULL << 32);
if ( !first ) {
printf("%d %Lu %Lun", time(NULL), (bout-lbout)*8, (bin-lbin)*8);
fflush(stdout);
} else {
first = 0;
}
lbin = bin; lbout = bout;
fclose(pnd);
sleep(1);
}
}
分享到:
相关推荐
在Linux操作系统下实现网络流量记录是一个关键的网络管理任务,这有助于监控网络资源的使用情况,提供计费管理和故障排查的数据支持。本文主要介绍了几种在Linux环境下记录网络流量的方法,包括基于代理、路由器以及...
5. **实时报警**:当网络流量超出预设阈值时,触发警报机制,提醒管理员关注。 通过学习和实践这份源代码,初学者不仅可以掌握网络监控的基础知识,还能提高编程能力,特别是在处理系统级问题和数据分析方面。同时...
以上就是基于Linux平台使用MRTG进行网络流量监控的设计与实现过程,通过这个过程,我们可以深入了解网络流量监控的工作原理,熟练掌握MRTG和SNMP的使用,并能应用于实际的网络环境中,为网络管理和规划提供强有力的...
以下是一些常用的方法和命令,帮助你在Linux下实现类似Windows的任务栏实时网速显示。 1. **`ifconfig` 命令**: `ifconfig` 是一个基础的网络配置工具,可以显示网络接口的状态,包括IP地址、子网掩码、广播地址...
### 基于Linux的网络流量控制机制 #### 摘要及背景 随着互联网技术的飞速发展,网络流量的急剧增长已成为普遍现象,尤其是视频流等多媒体数据的传输需求日益增加。传统的尽力而为(Best-effort)网络模型在处理...
综上所述,通过Linux内核提供的接口和libpcap库,我们可以实现详细的进程级网络流量统计,这对于诊断网络问题、优化系统性能和保障网络安全具有重要作用。在实际应用中,还需要根据具体需求进行调整和优化,确保统计...
标题 "c++ Linux 流量统计,抓包重组" 涉及到的是在Linux环境中使用C++语言开发网络流量监控程序的技术。该程序的主要功能是捕获网络接口上的数据包,对其进行重组和解析,然后将处理结果转换为JSON格式,并存储到...
在Linux下,有多种工具可用于实现进程级别的网络流量监控: 1. `netstat`:这是一个基本的命令行工具,可以显示网络连接状态,包括TCP、UDP和RAW连接。通过结合`-p`选项,可以查看每个连接对应的进程ID。 2. `...
KTAM 通过采取 Linux 下可装载模块的方式实现,完全在内核级实现了网络流量的监测分析,降低了系统调用和内存拷贝等开销,提高了流量分析性能。 基于 Linux 内核的流量分析方法的优点是: 1. 降低了系统调用和内存...
在日常运维工作中,监控和管理服务器的网络流量是一项重要的任务。这不仅有助于了解当前网络环境的状态,还可以帮助排查性能问题、优化资源配置以及确保系统的稳定运行。本文将详细介绍两种常用的方法来查看Linux...
`catstream`脚本提供了一种简便的方法来监控Linux系统的网络流量。通过对关键命令的理解和应用,可以快速掌握其实现原理,并根据实际需求进行定制化开发。这对于提升网络管理效率和安全性具有重要意义。
在Linux环境中,获取系统带宽信息通常是通过命令行工具或者编程接口来实现的。本教程将详细介绍如何在不依赖额外工具的情况下,通过编写简单的脚本来获取网络带宽使用情况。提供的压缩包文件"daikuan.sh"是一个Shell...
其中,《Linux高级路由与流量控制》是一份详尽的技术文档,由多位专家共同编写,旨在深入探讨Linux下的高级路由技术和流量控制方法。 #### 二、IPRoute2概述 - **IPRoute2** 是Linux系统中用于网络配置和监控的核心...
### 基于MRTG的网络流量监测系统设计与实现 实验报告 #### 1. 系统要求 为了确保MRTG网络流量监测系统的正常运行,首先需要确保计算机处于Windows XP操作系统环境下,并且具备以下条件: - **网络畅通**:确保...
MRTG(Multi Router Traffic Grapher)是一款免费的网络流量监控工具,它利用SNMP(Simple Network Management Protocol)协议从网络设备收集数据,并生成图形化的流量报告,便于网络管理员实时监控网络状态。...
如果需要监控虚拟化环境下的网络流量,用户需要自行对脚本进行相应的修改。 首先,让我们深入了解监控Linux主机流量的基本方法。最常用的工具之一是`ifconfig`,它能够显示网络接口的统计信息,包括接收和发送的...
文章还详细介绍了如何使用混杂工作模式来收集网络中的数据,并结合 TCP/IP 协议在 Linux 系统中实现网络嗅探器的具体方法。 知识点一:以太网卡的广播、多播和混杂工作模式 以太网卡在网络中有三种工作模式:广播...
《Linux系统下的网络流量监控——MRTG详解》 在当今信息化社会,网络流量监控对于企业和个人用户都至关重要。它能帮助我们了解网络资源的使用情况,预防网络拥塞,及时发现并解决问题。Linux系统中,MRTG(Multi ...
Linux下的TC(Traffic Control)是Linux内核中用于管理网络流量的一个组件,它能够对网络流量进行调度和整形。TC允许用户对通过网络接口的数据包进行控制,例如限速、延迟、丢包等。TC是Linux提供的一种强大的流量...