我有一个基于Java的媒体服务器,它将内容流式传输到网页和Android设备。它的设置使它可以被多个用户使用,并与其他服务器通信并与它们共享媒体。
我希望能够通过我的媒体服务器中的服务监控总网络流量(kb / s),这样我就可以通过我的Android设备或网页看到它,而无需查看我的服务器。
使用Java获取此信息有一种简单的方法吗?某种linux资源文件?我从google搜索过netstat和其他几个人,他们似乎没有以明显的方式向我提供我想要的东西。我只需要总流量,我不需要知道谁在和我说话。
感谢您的帮助。 :)
pps:我正在使用OpenSUSE的最新版本,但在Fedora上也有使用版本(最新版本)。答案 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)