基于Java的Linux网络使用监控

基于Java的Linux网络使用监控,java,linux,networking,network-programming,Java,Linux,Networking,Network Programming,我有一个基于Java的媒体服务器,可以将内容流式传输到网页和android设备。它的设置使它可以被多个用户使用,也可以与其他服务器对话,并与他们共享媒体 我希望能够通过媒体服务器中的服务监控总网络流量(kb/s),这样我就可以通过android设备或网页查看流量,而无需查看服务器 有没有一种简单的方法可以用Java获取这些信息?某种linux资源文件?我在谷歌上看过netstat和其他一些网站,他们似乎没有以一种明显的方式给我提供我想要的东西。我只需要总流量,我不需要知道谁在跟我说话 谢谢你的帮

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

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

有没有一种简单的方法可以用Java获取这些信息?某种linux资源文件?我在谷歌上看过netstat和其他一些网站,他们似乎没有以一种明显的方式给我提供我想要的东西。我只需要总流量,我不需要知道谁在跟我说话

谢谢你的帮助。:)


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

您可以从
/proc/net/dev
中阅读网络统计信息--有关详细信息,请参阅

您将看到如下内容:

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 相互间|接收|发送 面|字节数据包错误丢弃fifo帧压缩多播|字节数据包错误丢弃fifo COLS载波压缩 本地区:25043000 25043000 eth0:33769785 2548318 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 因此,您需要打开文件,读取每一行并检查第一列以找到您关心的接口,然后提取接收和/或发送的字节和/或数据包。如果跟踪两次读取之间的时间间隔,可以按如下方式计算速率:

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)

您可以从
/proc/net/dev
中读取网络统计信息--有关详细信息,请参阅

您将看到如下内容:

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 相互间|接收|发送 面|字节数据包错误丢弃fifo帧压缩多播|字节数据包错误丢弃fifo COLS载波压缩 本地区:25043000 25043000 eth0:33769785 2548318 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 因此,您需要打开文件,读取每一行并检查第一列以找到您关心的接口,然后提取接收和/或发送的字节和/或数据包。如果跟踪两次读取之间的时间间隔,可以按如下方式计算速率:

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)

你是说我可以读取上面的字节数,然后在几秒钟内再次读取,差值/时间就是我的速率?嗯,这是一个有趣的方法。我想这样做不会太难。太好了。现在所有的事情都是用XML文件完成的,所以我只需要一些定时服务来更新XML文件。谢谢你的建议!你是说我可以读取上面的字节数,然后在几秒钟内再次读取,差值/时间就是我的速率?嗯,这是一个有趣的方法。我想这样做不会太难。太好了。现在所有的事情都是用XML文件完成的,所以我只需要一些定时服务来更新XML文件。谢谢你的建议!