免费注册 查看新帖 |

Chinaunix

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

求教大虾们: linux 下用c语言编程统计网卡流量。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-26 20:39 |只看该作者 |倒序浏览
如何在linux下用c语言编程实现——统计网卡的流量

不要调用linux 命令,需要用系统api函数实现。
我最近研究的方法有:
1 读取/proc/net/dev文件,因为系统中此文件为空,所以该方法不可行。
2 读取网卡驱动程序的统计信息,这个比较符合要求,可是不知道怎么实现。有没有专有的ioctl或者别的函数什么的。
3 我看ifconfig源码是用interface.h结构实现的,可是linux下我没有找到interface结构的定义文件(interface.h)。

论坛徽章:
0
2 [报告]
发表于 2010-04-28 16:25 |只看该作者
ifconfig 也是从/proc/net/dev 中读数据的。

论坛徽章:
0
3 [报告]
发表于 2010-08-26 12:20 |只看该作者
。。。。。

论坛徽章:
0
4 [报告]
发表于 2010-08-26 16:54 |只看该作者
可以直接写个内核模块,修改网卡驱动
在网卡驱动,收发数据包函数中添加相应的钩子
然后内核模块实现钩子函数,用netlink or 字符设备的方式将收到的数据倒到用户态显示

做的足够完善的话,可以添加监控开关哦

另外,也可以使用systemtap/linux下    dtrace/sun下面
通过脚本语言,能非常方便的收集网卡收发包的信息统计
因为systemtap是一套解释性语言,最后调用的还是C,编成KO了,所以也算符合你的命题了...

ps:不明白你的系统怎么没有/proc/net/dev
proc文件系统没有安装??

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
5 [报告]
发表于 2010-08-27 17:14 |只看该作者
其实这个用shell脚本就可以了吧

论坛徽章:
0
6 [报告]
发表于 2010-08-27 17:17 |只看该作者
主要是命题作文嘛
而且,shell中基本上命令都是从/proc里面读的。他还说了可能么有proc文件系统的情况,汗一个。
呵呵,我这两天可能写个e1000相关的改动,然后把这个代码实现一下,看时间吧

论坛徽章:
0
7 [报告]
发表于 2010-09-01 14:10 |只看该作者
你看用netfilter试一下呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP