在网络应用中,经常要对网卡的流量进行统计分析。
和网卡相关的统计数据主要有:网卡信息(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使用之:取得系统内存的数据》中取得
分享到:
相关推荐
sugar-spells:糖果网站
:rocket:React Native Sugar Style ( :test_tube:实验) :artist_palette: React Native StyleSheet的基于主题的替代方案 :sparkles:支持将响应值作为数组 :triangular_ruler:减少每个组件中的计算设备高度和宽度 :...
yask库gulp-sugar-simple的测试 这是一个使用任务库测试的模块。
karma-sugar-reporter:测试错误时显示源代码
设置和使用 添加到 Gemfile: gem 'sugar_refinery' , require : 'sugar_refinery/all' 然后向当前的 Ruby 文件或模块添加改进: using SugarRefinery :: CamelSnake using SugarRefinery :: HashZip ...
Sugar 的日期解析,尤其是自然语言处理,在 JavaScript 世界中是首屈一指的。 该模块为节点和浏览器公开了 Sugar 的 ,剥离了库的其余部分。 安装 节点 从 npm 安装: npm install sugar-date 需要应用程序入口点...
Sugar Labs IRC 帮助机器人#sugar 频道的 IRC Bot 请加入 #sugar 频道进行测试跑步要运行机器人,您需要首先安装以下要求: $ sudo pip install -r requirements.txt然后运行机器人: git clone ...
sugar Android数据库框架jar包,欢迎同学们下载,sugar 框架用起来方便很多
第2步:把\htdocs\sugarcrm下的cache和custom全删除(使用Cache文件夹会访问更快,每次登陆系统会自动产生;custom是用户自定义的简直,在用户自定义了某些键值后,每次自动加载); 第3步,把汉化包文件(主要是...
SugarCRM v3.5.1c 简体中文版 See the Installation Guide found on SugarForge.org for installation steps of Sugar Open Source. http://www.sugarcrm.com/crm/documentation.html How to Install a Sugar Patch ...
.NET 4.+ & .NET CORE 高性能 轻量级 ORM框架众多.NET框架中最容易使用的数据库访问技术,比较方便的数据访问源码
糖唇 这是我的第一个网站,我的蛋糕店主要使用HTML和CSS。
export.sugar百度大屏sugar模版下载
SDDM的Sugar Dark登录主题 糖具有极高的可定制性,太甜了,仅看糖就可能导致糖尿病。 为您的用户,您的家人和您自己增加登录体验。 Sugar是跨平台的,与用户体验和功能有关。 牢记这些原则,Sugar完全是从零开始编写...
matlab转换java代码为Sugar1Cup汇编的代码(毕业项目-电子工程) 文件指南 android_app android应用程序文件(java) 将应用程序和可视化中的json数据保存到图形(饼图/条形图) 保存个人数据(用户输入)以计算...
sugar.zip,使用MotionLayout实现高德地图bottomSheets效果
作 为数据挖掘课程内容的回顾与应用,本文对wine数据集进行了数据探索性分析,并将数 据挖掘的决策树、支持向量机、聚类等常用方法应用于具体的数据挖掘任务,并取得了 较好的效果。 关 键 词:wine数据集、决策树、...
Sugar:用超级简单的方法处理Android数据库
糖-xhr用法 import { post } from 'sugar-xhr'let options = { headers: { 'X-Foo': 'bar' } }post('http://foobar.com', { foo: 'bar' }, opts).then(function(resp) {console.log(resp.body)}) import get from '...
flex.exe和bison.exe for windows