≡
导航
搜索
教程
插件
模型
模板
博客
交易
朋友
编程语言分享讨论总汇吧
已关注 | 取消
+关注
关注:
10
帖子:
1,222
签到
05月05日 尚未签到
看帖
图片
精品
视频
共有回帖数
1
个
C语言实现ifconfig获取网卡接收和发送流量统计
只看楼主
收藏
回复
长街旧港00
等级:
在Windows下我们可以利用ipconfig命令获取网卡的相关信息,在Linux下命令是ifconfig我们可以 获取的信息更为丰富,其中包括网卡接收和发送的流量,用C语言实现这个命令并不是一件简单的事,由此, 博主经查阅相关资料,得知,网卡的相关信息保存在 /proc/net/dev 这个文件夹下,所以,我们可以 通过读取这个文件里的信息获取相应网卡的信息。这个文件包含四部分内容,分别是:发送包的个数 ,发送的流量,接收包的个数,接收的流量,同时,由于网络环境在不断的变化之中,所以,这个文件的内容 也是在实时更新的。下面这张图片显示的是 ifconfig 命令的实现结果
注意,其中有许多参数,这些参数并不保存在文件中下面是博主实现的一段C语言代码获取接收和 发送的流量重要的地方已经给出了注释
return NULL; } char *p; char *ifconfig_value; int i = 0; static long rx2_tx10[2]; /*去除空格,制表符,换行符等不需要的字段*/ for (p = strtok(pDev, " trn"); p; p = strtok(NULL, " trn")) { i++; ifconfig_value = (char*)malloc(20); strcpy(ifconfig_value, p); /*得到的字符串中的第二个字段是接收流量*/ if(i == 2) { rx2_tx10[0] = atol(ifconfig_value); } /*得到的字符串中的第十个字段是发送流量*/ if(i == 10) { rx2_tx10[1] = atol(ifconfig_value); break; } free(ifconfig_value); } return rx2_tx10; } int main() { long *ifconfig_result; double re_mb; /*eth0 是博主计算机上的网卡的名字*/ ifconfig_result = my_ipconfig("eth0"); /*保存在文件中的数值的单位是B,经过计算换算成MB*/ re_mb = (double)ifconfig_result[0]/(1024*1024); printf("接收流量:%0.2f MBn",re_mb); /*保存在文件中的数值的单位是B,经过计算换算成MB*/ re_mb = (double)ifconfig_result[1]/(1024*1024); printf("发送流量:%0.2f MBn",re_mb); }保存文件的名字为 dele.c运行相关的命令:gcc -o dele dele.c./dele得到结果如下图所示
楼主 2016-07-15 09:38
回复
长街旧港00
等级:
1楼 2016-07-15 09:39
回复
我也说一句
共有回帖数
1
个
回 帖
表情
图片
视频
欢迎来到本吧,您可以在此发帖和众多大咖交流学习.
选择或直接输入昵称
Tips:支持QQ截图直接粘贴
发表
登录直线网账号
自动登录
忘记密码
免费注册
本吧信息
查看详情
吧主:
禾木
本吧公告
好好学习,天天向上!
我常逛的吧
我管理的吧
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈
|
关于直线
|
版权声明
|
会员须知