在网络应用中,经常要对网卡的流量进行统计分析。
和网卡相关的统计数据主要有:网卡信息(ip地址、子网掩码、mac地址等)、网卡的吞吐量、流量等等。
当然了使用sigar也可以获得这些数据。
下面通过例子说明:
1.package lab.sigar;
2.
3.import java.util.ArrayList;
4.import java.util.List;
5.
6.import org.hyperic.sigar.NetInterfaceConfig;
7.import org.hyperic.sigar.NetInterfaceStat;
8.import org.hyperic.sigar.Sigar;
9.import org.hyperic.sigar.SigarException;
10.
11.import com.thoughtworks.xstream.XStream;
12.
13./**
14. * 网卡信息、接口数据、流量
15. *
16. * 使用Sigar获得网卡信息
17. *
18. */
19.public class NetInterfaceData {
20.
21. private NetInterfaceConfig config;
22. private NetInterfaceStat stat;
23. private long rxbps;
24. private long txbps;
25.
26. public NetInterfaceData() {}
27.
28. public void populate(Sigar sigar, String name)
29. throws SigarException {
30.
31. config = sigar.getNetInterfaceConfig(name);
32.
33. try {
34.
35. long start = System.currentTimeMillis();
36. NetInterfaceStat statStart = sigar.getNetInterfaceStat(name);
37. long rxBytesStart = statStart.getRxBytes();
38. long txBytesStart = statStart.getTxBytes();
39. Thread.sleep(1000);
40. long end = System.currentTimeMillis();
41. NetInterfaceStat statEnd = sigar.getNetInterfaceStat(name);
42. long rxBytesEnd = statEnd.getRxBytes();
43. long txBytesEnd = statEnd.getTxBytes();
44.
45. rxbps = (rxBytesEnd - rxBytesStart)*8/(end-start)*1000;
46. txbps = (txBytesEnd - txBytesStart)*8/(end-start)*1000;
47. stat = sigar.getNetInterfaceStat(name);
48. } catch (SigarException e) {
49.
50. } catch (Exception e) {
51.
52. }
53. }
54.
55. public static NetInterfaceData gather(Sigar sigar, String name)
56. throws SigarException {
57.
58. NetInterfaceData data = new NetInterfaceData();
59. data.populate(sigar, name);
60. return data;
61. }
62.
63. public NetInterfaceConfig getConfig() {
64. return config;
65. }
66.
67. public NetInterfaceStat getStat() {
68. return stat;
69. }
70.
71.
72.
73. public long getRxbps() {
74. return rxbps;
75. }
76.
77. public long getTxbps() {
78. return txbps;
79. }
80.
81. public static void main(String[] args) throws Exception {
82. Sigar sigar = new Sigar();
83. String[] netIfs = sigar.getNetInterfaceList();
84. List netIfList = new ArrayList();
85. for ( String name:netIfs ) {
86. NetInterfaceData netIfData1 = NetInterfaceData.gather(sigar, name);
87. netIfList.add(netIfData1);
88. }
89. XStream xstream = new XStream();
90. xstream.alias("NetInterfaceDatas", List.class);
91. xstream.alias("NetInterfaceData", NetInterfaceData.class);
92. System.out.println(xstream.toXML(netIfList));
93. }
94.}
分享到:
相关推荐
程序用到的jar 博文链接:https://wangrui.iteye.com/blog/153002
Sigar有C,C#,Java和Perl API,java版的API为sigar.jar sigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar 依赖sigar-amd64-winnt.dll或sigar-x86-...
包括:libsigar-aarch64-linux.so、libsigar-amd64-linux.so、libsigar-x86-linux.so、sigar-amd64-winnt.dll、sigar-x86-winnt.dll、sigar-x86-winnt.lib
sigar兼容linux和windows,本人亲自测试
一、 Sigar详细介绍 Sigar(System Information Gatherer And Reporter),是一个开源的工具,提供了跨平台的系统信息收集的API,核心由C语言实现的。 Sigar资料地址:...
使用Sigar,你完全可以模仿出cpuinfo,meminfo,top,free,ifconfig,ipconfig,netstat,route,df,du,ps,ls等多种unix平台和windows平台的指令. 2.跨平台,支持多数平台 支持的平台包括:windows系列(32系列,IA64系列,AMD64...
Sigar(System Information Gatherer And Reporter),是一个开源的工具,提供了跨平台的系统信息收集的API。 Sigar API 提供一个方便的接口来收集系统信息,如: ◆系统内存,页面交换,cpu,平均负载,运行时间,...
把sigar压缩文件覆盖到系统文件目录下,能够成功运行例子,说明安装成功。
java利用sigar模块实现监控服务器运行状态,资料包含win和linux dll动态库和案例代码。
开源工具包 SIGAR System Information Gatherer And Reporter 即 系统信息收集和报告 官方站点: http: support hyperic com display SIGAR Home;jsessionid A9705887A07D20BBAC9A96500BC60822 SIGAR 官方站点 ...
通过Hyperic-hq产品的基础包sigar.jar来实现服务器状态数据的获取。Sigar.jar包是通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar依赖sigar-amd64-winnt.dll或sigar-x86-winnt.dll,...
Linux, Windows, Solaris, AIX, HP-UX, FreeBSD and Mac OSX.Sigar有C,C#,Java和Perl API,java版的API为sigar.jar sigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。...
sigar
Sigar有C,C#,Java和Perl API,java版的API为sigar.jar sigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。Windows操作系统下Sigar.jar 依赖sigar-amd64-winnt.dll或sigar-x86-...
sigar_mirror(系统信息收集API_Sigar)
在树莓派和基于arm的lunux系统中使用sigar库时必需的本地库文件。官方并未提供此文件。
Sigar有C,C#,Java和Perl API,java版的API为sigar.jar sigar.jar的底层是用C语言编写的,它通过本地方法来调用操作系统API来获取系统相关数据。 注意:Sigar为不同平台提供了不同的库文件.典型的: windows平台:...
sigar 取cpu,进程,内存,硬盘信息的实例代码