Finding Network statistics in Dot Net
Last few days while working with my broadband
network (downloading few stuff) I wanted to check the exact amount of
download per minute. I tried to check the data from task manager and
resource monitor. But these gave data in terms of percentage of network
use. Hence I could never find the exact amount of download.
So I wrote a small application to sniff the network
and find out the exact amount of download. After fetching the data we
can do lots of thing like creating speed chart etc…
To fetch the network we use the System.Net.NetworkInformation
namespace
First we need to get the network Interface to track. A Machine might be connected to many network and we need to track each network differently. We can do that by the code below.
foreach (NetworkInterface currentNetworkInterface in NetworkInterface.GetAllNetworkInterfaces())
{
if (currentNetworkInterface.Name.ToLower() == "NameOf
network")
{
networkInterface = currentNetworkInterface;
break;
}
}
We get the network usage of the current network with the help of GetIPv4Statistics function which returns object of the IPv4InterfaceStatistics class.
IPv4InterfaceStatistics interfaceStatistic = networkInterface.GetIPv4Statistics();You can find the total bytes send and received with
the help of the property.
lngBytesSend = interfaceStatistic.BytesSent;
lngBtyesReceived = interfaceStatistic.BytesReceived
To find the speed of the download and upload you need to find the difference of the Bytes send and received between required time interval and you will have the speed.
Remember bytes send and received are kept differently hence total download = bytes send + bytes received.
Vikram