Sigar获取网卡流量信息
来源:互联网 发布:手机淘宝试衣间在哪 编辑:程序博客网 时间:2024/04/27 23:50
在网络应用中,经常要对网卡的流量进行统计分析。
和网卡相关的统计数据主要有:网卡信息(ip地址、子网掩码、mac地址等)、网卡的吞吐量、流量等等。
当然了使用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)); } }
输出:
<NetInterfaceDatas> <NetInterfaceData> <config> <name>eth0</name> <hwaddr>00:FF:AE:0F:32:92</hwaddr> <type>Ethernet</type> <description>TAP-Win32 Adapter V9 #2 - ????ü??????ò?????</description> <address>0.0.0.0</address> <destination>0.0.0.0</destination> <broadcast>255.255.255.255</broadcast> <netmask>0.0.0.0</netmask> <flags>2050</flags> <mtu>1500</mtu> <metric>0</metric> </config> <stat> <rxBytes>0</rxBytes> <rxPackets>0</rxPackets> <rxErrors>0</rxErrors> <rxDropped>0</rxDropped> <rxOverruns>-1</rxOverruns> <rxFrame>-1</rxFrame> <txBytes>0</txBytes> <txPackets>0</txPackets> <txErrors>0</txErrors> <txDropped>0</txDropped> <txOverruns>-1</txOverruns> <txCollisions>-1</txCollisions> <txCarrier>-1</txCarrier> <speed>10000000</speed> </stat> <rxbps>0</rxbps> <txbps>0</txbps> </NetInterfaceData> <NetInterfaceData> <config> <name>eth1</name> <hwaddr>00:FF:C8:0A:AE:37</hwaddr> <type>Ethernet</type> <description>eetrust VAdapter - ????ü??????ò?????</description> <address>0.0.0.0</address> <destination>0.0.0.0</destination> <broadcast>255.255.255.255</broadcast> <netmask>0.0.0.0</netmask> <flags>2050</flags> <mtu>1500</mtu> <metric>0</metric> </config> <stat> <rxBytes>0</rxBytes> <rxPackets>0</rxPackets> <rxErrors>0</rxErrors> <rxDropped>0</rxDropped> <rxOverruns>-1</rxOverruns> <rxFrame>-1</rxFrame> <txBytes>0</txBytes> <txPackets>0</txPackets> <txErrors>0</txErrors> <txDropped>0</txDropped> <txOverruns>-1</txOverruns> <txCollisions>-1</txCollisions> <txCarrier>-1</txCarrier> <speed>10000000</speed> </stat> <rxbps>0</rxbps> <txbps>0</txbps> </NetInterfaceData> <NetInterfaceData> <config> <name>eth2</name> <hwaddr>00:22:68:5D:C8:52</hwaddr> <type>Ethernet</type> <description>Realtek PCIe GBE Family Controller - ????ü??????ò?????</description> <address>10.3.43.63</address> <destination>0.0.0.0</destination> <broadcast>10.3.43.255</broadcast> <netmask>255.255.255.0</netmask> <flags>2115</flags> <mtu>1500</mtu> <metric>0</metric> </config> <stat> <rxBytes>177337765</rxBytes> <rxPackets>295449</rxPackets> <rxErrors>0</rxErrors> <rxDropped>0</rxDropped> <rxOverruns>-1</rxOverruns> <rxFrame>-1</rxFrame> <txBytes>27724399</txBytes> <txPackets>203267</txPackets> <txErrors>0</txErrors> <txDropped>0</txDropped> <txOverruns>-1</txOverruns> <txCollisions>-1</txCollisions> <txCarrier>-1</txCarrier> <speed>100000000</speed> </stat> <rxbps>2000</rxbps> <txbps>2000</txbps> </NetInterfaceData> <NetInterfaceData> <config> <name>lo0</name> <hwaddr>00:00:00:00:00:00</hwaddr> <type>Local Loopback</type> <description>MS TCP Loopback interface</description> <address>127.0.0.1</address> <destination>0.0.0.0</destination> <broadcast>0.0.0.0</broadcast> <netmask>255.0.0.0</netmask> <flags>73</flags> <mtu>1520</mtu> <metric>0</metric> </config> <stat> <rxBytes>36535999</rxBytes> <rxPackets>350095</rxPackets> <rxErrors>0</rxErrors> <rxDropped>0</rxDropped> <rxOverruns>-1</rxOverruns> <rxFrame>-1</rxFrame> <txBytes>36535999</txBytes> <txPackets>350031</txPackets> <txErrors>0</txErrors> <txDropped>0</txDropped> <txOverruns>-1</txOverruns> <txCollisions>-1</txCollisions> <txCarrier>-1</txCarrier> <speed>10000000</speed> </stat> <rxbps>1000</rxbps> <txbps>1000</txbps> </NetInterfaceData></NetInterfaceDatas>下载地址:见内容底部
- Sigar获取网卡流量信息
- sigar获取进程信息
- Sigar获取磁盘信息
- Sigar获取系统信息
- sigar获取系统信息
- sigar获取系统信息
- Sigar获取内存的信息
- 2.Sigar获取CPU信息
- 3.Sigar获取内存信息
- 4.Sigar获取磁盘信息
- 2.Sigar获取CPU信息
- 3.Sigar获取内存信息
- 4.Sigar获取磁盘信息
- VC获取网卡流量
- 如何使用sigar包获取系统信息
- 获取系统各项底层信息-sigar
- 借助Sigar API获取CPU相关信息
- 借助Sigar API获取内存信息
- 中方要求加纳彻查中国少年被杀事件 严惩凶手-加纳-射杀-中国少年
- ios菜鸟之路:UIView动画之汽车行驶在道路上
- java单例模式原理
- 簡繁轉換
- lucene学习资料(索引文件格式详解)
- Sigar获取网卡流量信息
- 在Eclipse中设置中文JavaDOC
- WhirlyCache介绍
- servlet init 方法
- c++ hash_map 详细介绍
- Solr开发文档
- Windows Phone 7 墓碑机制
- SWT/Jface SelectionlIstener
- Sigar获取系统信息