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

Sigar使用之:取得网卡流量数据

阅读更多
在网络应用中,经常要对网卡的流量进行统计分析。

和网卡相关的统计数据主要有:网卡信息(ip地址、子网掩码、mac地址等)、网卡的吞吐量、流量等等。

当然了使用sigar也可以获得这些数据。

下面通过例子说明:

package lab.sigar;

import java.util.ArrayList;
import java.util.List;

import org.hyperic.sigar.NetInterfaceConfig;
import org.hyperic.sigar.NetInterfaceStat;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;

import com.thoughtworks.xstream.XStream;

/**
 * 网卡信息、接口数据、流量
 * 
 * 使用Sigar获得网卡信息
 * 
 */
public class NetInterfaceData {

    private NetInterfaceConfig config;
    private NetInterfaceStat stat;
    private long rxbps;
    private long txbps;

    public NetInterfaceData() {}

    public void populate(Sigar sigar, String name)
        throws SigarException {

        config = sigar.getNetInterfaceConfig(name);

        try {
            
            long start = System.currentTimeMillis();
            NetInterfaceStat statStart = sigar.getNetInterfaceStat(name);
    		long rxBytesStart = statStart.getRxBytes();
    		long txBytesStart = statStart.getTxBytes();
    		Thread.sleep(1000);
    		long end = System.currentTimeMillis();
    		NetInterfaceStat statEnd = sigar.getNetInterfaceStat(name);
    		long rxBytesEnd = statEnd.getRxBytes();
    		long txBytesEnd = statEnd.getTxBytes();
    		
    		rxbps = (rxBytesEnd - rxBytesStart)*8/(end-start)*1000;
    		txbps = (txBytesEnd - txBytesStart)*8/(end-start)*1000;
    		stat = sigar.getNetInterfaceStat(name);
        } catch (SigarException e) {
            
        } catch (Exception e) {
        	
        }
    }

    public static NetInterfaceData gather(Sigar sigar, String name)
        throws SigarException {
    
        NetInterfaceData data = new NetInterfaceData();
        data.populate(sigar, name);
        return data;
    }

    public NetInterfaceConfig getConfig() {
        return config;
    }

    public NetInterfaceStat getStat() {
        return stat;
    }
    
    
    
    public long getRxbps() {
		return rxbps;
	}

	public long getTxbps() {
		return txbps;
	}

	public static void main(String[] args) throws Exception {
    	Sigar sigar = new Sigar();
    	String[] netIfs = sigar.getNetInterfaceList();
    	List netIfList = new ArrayList();
    	for ( String name:netIfs ) {
    		NetInterfaceData netIfData1 = NetInterfaceData.gather(sigar, name);
    		netIfList.add(netIfData1);
    	}
    	XStream xstream = new XStream();
    	xstream.alias("NetInterfaceDatas", List.class);
		xstream.alias("NetInterfaceData", NetInterfaceData.class);
        System.out.println(xstream.toXML(netIfList));
    }
}


用到的jar包可以在《Sigar使用之:取得系统内存的数据》中取得

2
0
分享到:
评论

相关推荐

    SQL Sugar数据访问框架

    1. 易于使用:SQL Sugar被誉为众多.NET框架中最易用的数据库访问技术。它的API设计简洁明了,学习曲线平缓,开发者可以快速上手并进行数据库操作。 2. 高性能:通过优化的查询执行机制和高效的缓存策略,SQL Sugar...

    export.sugar百度大屏sugar模版下载.zip

    这些模板的使用方法可能包括在SUGAR环境中导入文件,然后根据实际数据进行配置和调整,以满足具体需求。用户需要有一定的数据处理和SUGAR操作基础,才能充分利用这些模板。同时,由于涉及到的是社区健康管理和疫情...

    sugar.jar jar包.rar

    使用Sugar框架进行数据操作非常直观。例如,插入一条新记录: ```java Context context = ...; // 应用上下文 DatabaseHelper dbHelper = new DatabaseHelper(context); SQLiteDatabase db = dbHelper....

    gulp-sugar-test:使用口香糖的例子

    2. **gulp插件机制**: `gulp-sugar-simple`是`gulp`的一个插件,展示了如何编写和使用`gulp`插件。`gulp`插件通常是小而专注的模块,通过`gulp.task`定义任务,并使用`gulp.src`和`gulp.dest`来读取和输出文件。 3....

    SugarCRM傻瓜教程

    3. 数据管理:教授如何在SugarCRM中创建和管理联系人、客户、销售机会等数据模块。重点在于如何维护高质量的数据,以及如何通过数据挖掘获取商业洞察力。 4. 销售流程:深入讲解如何利用SugarCRM管理销售流程,包括...

    react-native-sugar-style:带有主题支持的React Native Stylesheet替代品

    :rocket:React Native Sugar Style ( :test_tube:实验) :artist_palette: React Native StyleSheet的基于主题的替代方案 :sparkles:支持将响应值作为数组 :triangular_ruler:减少每个组件中的计算设备高度和宽度 :...

    开源客户关系管理系统SugarCRM的使用教程.docx

    **SugarCRM 开源客户关系管理系统使用教程** SugarCRM 是一款流行的开源客户关系管理系统,它提供了丰富的功能,帮助企业管理和优化与客户的关系。以下是一些关键点的详细解释: 1. **权限设置** - **角色控制**...

    Sugar (Android orm )

    通过使用ORM技术,开发者可以将Java对象直接映射到数据库表,极大地简化了数据持久化的复杂性。 在Android开发中,数据存储通常涉及SQLite数据库,而手动编写SQL语句和管理数据库会增加代码的复杂度和维护成本。...

    SugarCRM

    作为SugarCRM开源用户指南的贡献者之一,作者深入浅出地介绍了如何将SugarCRM引入到小型或中型企业的业务流程中。 ### 一、SugarCRM概述 SugarCRM是一个开源的客户关系管理系统,它为企业提供了一套全面的工具来...

    sugarcrm 英文开发指南

    SugarCRM开发者指南针对希望使用SugarCRM的定制工具和API扩展或自定义功能的开发者,适用于SugarUltimate、Enterprise、Corporate、Professional和Community版本。 三、SugarCRM模块框架与定制化 SugarCRM由多个...

    sugar-spells:糖果网站

    糖魔法(Sugar Spells)是一个以糖果为主题的网站设计项目,它主要使用了CSS技术来构建一个充满甜美和奇幻风格的网页。在这个项目中,开发者通过CSS实现了丰富的视觉效果和交互体验,为用户创造了一个沉浸式的虚拟...

    SugarCrm6.3.1中文汉化包

    2. **备份数据**:在进行任何修改之前,先备份现有的SugarCRM系统数据,以防万一出现问题可以恢复。 3. **下载汉化包**:从可靠来源获取SugarCRM-LangPack-zh_cn-6.3.1.zip文件,这是实际的中文语言包。 4. **解压...

    sugarCrm 文档

    - **开发人员指南**:针对开发者提供的文档,介绍如何使用SugarCRM进行二次开发。 - **API文档**:详细介绍各个API接口的使用方法。 - **最佳实践**:分享成功案例和推荐的最佳实践。 #### 安装SugarCRM ##### ...

    sugar_refinery:Ruby 的细微改进

    设置和使用 添加到 Gemfile: gem 'sugar_refinery' , require : 'sugar_refinery/all' 然后向当前的 Ruby 文件或模块添加改进: using SugarRefinery :: CamelSnake using SugarRefinery :: HashZip ...

    Match 3 Sweet Sugar v1.4.zip

    在源码中,我们可能会发现游戏使用了矩阵或者图数据结构来表示游戏板,通过贪心算法或深度优先搜索等策略来查找和消除可匹配的糖果组合。 标签"源码 Sweet Match"提示我们,这个压缩包内可能包含游戏的源代码,这...

    win_flex_bison-latest.zip

    "data" 目录可能包含了一些示例数据或者测试用例,供用户在学习或测试 Flex 和 Bison 功能时使用。 "custom_build_rules" 可能是特定于 Windows 平台的构建规则,用于指导如何在 Visual Studio 或其他构建系统中...

    sugar-date:仅包含日期函数的 Sugar.js 的定制版本

    Sugar 的日期解析,尤其是自然语言处理,在 JavaScript 世界中是首屈一指的。 该模块为节点和浏览器公开了 Sugar 的 ,剥离了库的其余部分。 安装 节点 从 npm 安装: npm install sugar-date 需要应用程序入口点...

    Sugar 6.5.X 汉化包

    糖crm(SugarCRM)是一款广泛使用的客户关系管理(CRM)软件,主要帮助企业管理和优化与客户的交互,提升销售、市场营销和服务效率。"Sugar 6.5.X 汉化包"是针对这款软件的一个中文语言包,它使得中国用户能够更方便...

Global site tag (gtag.js) - Google Analytics