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

获取硬盘和网卡流量

 
阅读更多
#include <sys/vfs.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <string>
#include <assert.h>

using std::string;

string DiskCapacity(const string &path)
{
    assert(path.size() > 0);
    char disk_capacity[128];
    struct statfs st;
    int ret = statfs(path.c_str(), &st);
    if (ret == 0) {
		float freeCap = (1.0 * st.f_bsize * st.f_bavail) / (1024*1024*1024);
		float totalCap = (1.0 * st.f_bsize * st.f_blocks) / (1024*1024*1024);
		snprintf(disk_capacity, 128, "%.2f", freeCap);

    } else  {
        return "0";
    }

	return string(disk_capacity);
}

int64_t NetworkLoad()
{
	int64_t recv_bytes = 0;
	int64_t ethX_count = 0;
	size_t len = 0;
	ssize_t read;

	FILE* fp;
	fp = fopen("/proc/net/dev", "r");
	if (fp == NULL) {
	   printf("open /proc/net/dev fail errmsg=%s", strerror(errno));
           return 0;
	}

	char * line = NULL;
	while ((read = getline(&line, &len, fp)) != -1) {
		string line_str = line;
		string::size_type eth_pos;
		if ( (eth_pos = line_str.find("eth") ) != string::npos ) {
			string::size_type space_pos_t =  line_str.find(' ', eth_pos + 5);
			if (space_pos_t != string::npos) {
				recv_bytes += atol(line_str.substr(eth_pos + 5, space_pos_t - eth_pos - 5).c_str());
			}
			ethX_count++;
		}
	}
	if (line) 
		free(line);

	fclose(fp);

	return recv_bytes / ethX_count ; 
}

int main(int argc,char* argv[])
{
	printf("%s,%d", DiskCapacity("/").c_str(), NetworkLoad()/1024 );

}

 

分享到:
评论

相关推荐

    雅黑PHP探针

    有一个负责的站长,会对探针进行长期支持和更新。 用于Linux系统(不推荐使用于Windows系统)。... 注意:有些服务器做了权限设置,禁止PHP读取硬件信息,所以无法显示内存、硬盘、和网卡流量等信息,查看原因

    雅黑PHP探针 v0.4.7.zip

    雅黑科技探针最大的优点:每秒更新,不用刷网页。...注意:有些服务器做了权限设置,禁止PHP读取硬件信息,所以无法显示内存、硬盘、和网卡流量等信息   使用条款 1.该软件免费使用. 2.禁止未经通告的衍生版本.

    雅黑PHP探针 v0.4.7

    有一个负责的站长,会对探针进行长期支持和更新。... 注意:有些服务器做了权限设置,禁止PHP读取硬件信息,所以无法显示内存、硬盘、和网卡流量等信息使用条款 1.该软件免费使用. 2.禁止未经通告的衍生版本.

    雅黑PHP探针(手机版) 0.1.1.zip

    有些服务器做了权限设置,禁止PHP读取硬件信息,所以无法显示内存、硬盘、和网卡流量等信息。 公告: 最近发现有很多人对本探针很感兴趣,在此表示感谢。如果你修改本探针自己用是没问题的,本来就是开源的东西...

    雅黑PHP探针 版本0.4.7

    ... 雅黑科技探针最大的优点:每秒更新,不用刷网页。... 注意:有些服务器做了权限设置,禁止PHP读取硬件信息,所以无法显示内存、硬盘、和网卡流量等信息    使用条款  1.该软件免费使用.  2.禁止未经通告的衍生

    电脑优化工具包

    diskmaster.exe:软媒磁盘大师,测试包括SSD固态硬盘在内的所有磁盘性能和健康度,测试USB3.0设备速度和获取硬件信息。 dnshelper.exe:软媒DNS助手,帮您快速更换延迟低安全性高的DNS,防止DNS劫持,保证网络安全...

    绿色免安装 软媒魔方

    diskmaster.exe:软媒磁盘大师,测试包括SSD固态硬盘在内的所有磁盘性能和健康度,测试USB3.0设备速度和获取硬件信息。 dnshelper.exe:软媒DNS助手,帮您快速更换延迟低安全性高的DNS,防止DNS劫持,保证网络安全...

    网站建设硬件设计方案.docx

    采用专业磁盘阵列,实现图片和关键数据的读取和存储 数据库服务器和图片服务器后端分别接入光纤磁盘阵列,实现图片和数据库数据的高性能读写和查询。 硬件配置分析 3.1网络带宽 只考虑门户访问的带宽占用,后台管理...

    Visual C++网络通信编程实用案例精选 配套源码

    获取计算机的网卡地址【\chap2\ Local】 获取计算机安装的协议【\chap2\ Local】 获取计算机提供的服务【\chap2\ Local】 获取计算机的所有网络资源【\chap2\ Local】 修改本地计算机的所有网络设置【\chap2\ Local...

    Visual+C++网络通信编程实用案例.rar

    获取计算机的网卡地址【\chap2\ Local】 获取计算机安装的协议【\chap2\ Local】 获取计算机提供的服务【\chap2\ Local】 获取计算机的所有网络资源【\chap2\ Local】 修改本地计算机的所有网络设置【\chap2\ Local...

    VC++网络通信实例教程

    获取计算机的网卡地址【\chap2\ Local】 获取计算机安装的协议【\chap2\ Local】 获取计算机提供的服务【\chap2\ Local】 获取计算机的所有网络资源【\chap2\ Local】 修改本地计算机的所有网络设置【\chap2\ Local...

    (重要)AIX command 使用总结.txt

    //获取硬件信息 prtconf ****** 创建文件系统四部曲 ************************************************ &lt;1&gt; mklv -y lvinformix -c 2 rootvg 64 //在卷组rootvg上创建逻辑卷lvinformix, 大小为64(LP)×16M=1G, ...

    网路岗5.07.01 企业金版

    截取被监控者的电脑屏幕,获取客户机器系统信息,操作客户硬盘,操作客户机注册表等。截屏功能可自动完成,供领导查阅。 g、十多种专业报表。 实现专业图形和文字报表,报表内容包括:访问网页时间统计、...

    网络组建域管理课件2

    Windows 2000 Server只支持列在兼容列表中的硬件,对于没有列在其中的硬件,应从硬件制造商那里获取Windows 2000 Server支持的硬件驱动程序。 3. 文件系统 Windows 2000(包含Server 与 Professional版本)在...

    中小型企业网络设计方案.doc

    租用DDN专线费用详细列表: "速率 "初装费用(元/条 "终端设备 "线路月租赁费 "信息流量费" " ") " " " " " "区内 "区间 "DUT2603 " "服务器 "略 "25,000 "1 " "交换机 "BENQ-SS0224 "2200 "4 " "网卡 "神州数码-...

    公司局域网组建方案范文.doc

    租用DDN专线费用详细列表: "速率 "初装费用(元/条 "终端设备 "线路月租赁费 "信息流量费" " ") " " " " " "区内 "区间 "DUT2603 " "服务器 "略 "25,000 "1 " "交换机 "BENQ-SS0224 "2200 "4 " "网卡 "神州数码-...

Global site tag (gtag.js) - Google Analytics