`
y150988451
  • 浏览: 195109 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

linux下获取网络流量的实现方法

阅读更多

通过读取 /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下模仿windows下面的实时网速的显示模块,实现实时测速。

    Linux进程网络流量统计的实现过程

    前言 linux都有相应开源工具实时采集网络连接、进程等信息其中网络连接一般包括最基本的五元组信息(源地址、目标地址、源端口、目标端口、协议号)再加上所属进程信息...为此都需要获取到更细粒度的进程级网络流量数据

    C语言实现获取网络带宽占用情况

    采用C语言实现,获取服务器指定网卡的网络流量并计算单位时间的网速,从而计算相应网卡的带宽占用率。

    Linux 配置双网卡绑定实现负载均衡.docx

    Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。 bonding一共有7种工作模式(mode): 1)、bond=0,(balance-rr) Round-robin policy: (平衡轮询...

    基于Ruby符号执行的Metasploit攻击流量提取

    该方法无需搭建靶机环境,可以快速分析Metasploit框架中的攻击脚本,获取其对应的攻击流量,并且标记攻击流量中不同部分的属性,记录攻击状态的转移过程。 Metasploit 是一个使用 Ruby 脚本语言实现的、开源的渗透...

    网络信息在Linux系统下的捕获与分析 (2005年)

    通过数据包捕获与协议分析的被动流量监测获得各个协议层次的流量指标。结果 在网路上截取/阅读位于OSI协议模型中各个协议层次上的数据包。结论 此方法在LiFlUX系统中可简便快捷地实现,可以捕获和分析大量网络性能...

    基于Linux虚拟网卡测试平台的系统设计

    为了实现网络通信算法能够在单主机平台获得验证分析,提出基于Linux虚拟网卡的测试系统设计方案。并完成了系统软件设计。分析了Linux网络驱动框架原理,完成Linux虚拟网卡的创建与注册,通过搭建虚拟路由建立多张...

    linux网路编程 中文 23M 版

    2.1 Linux环境下的编辑器................................................. 14 2.1.1 v i m使用简介...................................................14 2 . 1 . 2使用v i m建立文件............................

    vc++ 应用源码包_3

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_2

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_5

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    智能网关结构.docx

    家庭网络可视为一种分布式网络,通过无线家庭网关实现对普通家电终端的远程控制是未来的发展趋势,冈此无线家庭网关是整个家庭网络的核心,它主要实现网络接入、远程控制以及无线连接家庭内部异构子网等功能。...

    利用virtualbox虚拟机实现端口转发

    virtualbox虚拟机实现端口转发,具体内容如下 1.应用场景 突破上网限制(如在公司内部限制访问外部网络,但是开放了某些... Kali Linux(安装rinetd作为流量转发中转站,桥接网络,ip:192.168.43.164) Windows 2003

    校园网网络安全方案设计..doc

    (17 3.1.5网络流量的监控 (17 3.1.6无线局域网安全技术 (17 3.2物理地址(MAC过滤 (18 3.2.1服务集标识符( SSID 匹配 (18 3.2.2端口访问控制技术和可扩展认证协议 (20 第一章校园网安全隐患分析 1.1.1 软件层次安全 ...

    计算机网络技术19春在线作业1-0003.docx

    间相互传输文件的机制,因此它是用户获得大量Internet资源的重要方法 B:WWW利用超文本和超媒体技术组织和管理信息浏览或信息检索的系统 C:E-mail是用户或者用户组之间通过计算机网络收发信息的服务 D:当拥有一台586...

Global site tag (gtag.js) - Google Analytics