使用Java在Linux中进行网络使用情况监控

时间:2012-05-06 15:31:06

标签: java linux networking network-programming

我有一个基于Java的媒体服务器,它将内容流式传输到网页和Android设备。它的设置使它可以被多个用户使用,并与其他服务器通信并与它们共享媒体。

我希望能够通过我的媒体服务器中的服务监控总网络流量(kb / s),这样我就可以通过我的Android设备或网页看到它,而无需查看我的服务器。

使用Java获取此信息有一种简单的方法吗?某种linux资源文件?我从google搜索过netstat和其他几个人,他们似乎没有以明显的方式向我提供我想要的东西。我只需要总流量,我不需要知道谁在和我说话。

感谢您的帮助。 :)

pps:我正在使用OpenSUSE的最新版本,但在Fedora上也有使用版本(最新版本)。

1 个答案:

答案 0 :(得分:1)

您可以从/proc/net/dev阅读网络统计信息 - 有关详细信息,请参阅http://linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html

你会看到这样的事情:

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo:    2504      30    0    0    0     0          0         0     2504      30    0    0    0     0       0          0
  eth0:33769785 2548318    0    0    0     0          0         0  4146854  215379    0    0    0     0       0          0
  eth1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0

因此,您需要打开文件,读取每一行并检查第一列以找到您关心的接口,然后提取接收和/或发送的字节和/或数据包。如果您跟踪读取之间的时间,您可以像这样计算费率:


b0 = t0时的字节数 b1 =时间t1的字节数,比t0晚一些时间。

然后您可以像这样计算费率r
r = (b1 - b0) / (t1 - t0)