I've got a Java based media server which streams content to both a webpage and an android device. It's set up so it can be used by multiple users and also talk with other servers and share media with them.
I'd like to be able to monitor the total network traffic (kb/s) via a service in my media server, so I can see it via my android device or webpage without having to look at my server.
Is there an easy way to get this information with Java? Some kind of linux resource file? I've looked at netstat and few others from googling and they don't seem to deliver me what I want in an obvious fashion. I just need the total traffic, I don't need to know who is talking to me.
Thanks for any help. :)
pps: I'm using the most recent release of OpenSUSE, but also have working versions on Fedora (most recent).
You can read network statistics from
/proc/net/dev
-- see http://linuxdevcenter.com/pub/a/linux/2000/11/16/LinuxAdmin.html for details.You'll see something like this:
So you'll need to open the file, read each line and check the first column to find the interface(s) you care about, and then extract the received and/or sent bytes and/or packets. If you keep track of the time between reads, you can calculate the rate like this:
Let
b0
= bytes at timet0
b1
= bytes at timet1
, some time later thant0
.Then you can calculate the rate,
r
, like this:r = (b1 - b0) / (t1 - t0)