免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1036 | 回复: 0
打印 上一主题 下一主题

linux下获取网络流量的实现方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-31 11:01 |只看该作者 |倒序浏览
仅是通过/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

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/9551/showart_93237.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP