How Can I Monitor Network Upload Speed?

Hello everyone!

I am looking for a way/solution or help to create a simple Windows application that can monitor the upload speed of the network and display it on a label or textfield. Any help or advice, would be much appreciated.

There are lots of variables, lots of questions and almost every answer will result in a different solution.

The main questions are:

-Do you want to know the upload speed of your connection to the internet or the speed of your PC to another machine on your LAN?
-How accurate do you want the result?
-Is your modem connected to your PC via USB/Ethernet or WiFi?

@ Hi!

To answer your questions in order:

  1. upload speed to the internet
  2. accuracy, haven’t thought about that. what I actually want is to detect if the overall upload speed increases beyond a certain point, like for example 1Mbps. If and when it does, the application will perform a certain task for as long as the speed remains above the 1Mbps point. When the speed goes down, the said task will also pause/stop.
  3. Only the Ethernet connection will be monitored.

To make something like that you have a few options:

  1. You’ll need to perform periodic uploads to a server/site/page on the internet. Time how long the upload takes and you can determine the speed of your upload connection.

  2. If you had data permanently going out over the modem, you could see if you modem supported SNMP. If it did, you could read a value from that which would include the total bytes send over the modem, a simple timed calculation could determine the upload rate at and given snapshot.

  3. If you only have one machine connecting to the internet, you could monitor your windows performance counters for outbound ethernet traffic, this would all be going to the modem and that would be a close indication of the data travelling over your modem.

  4. You could read out of performance counters: tps://msdn.microsoft.com/en-us/library/windows/desktop/aa373214%28v=vs.85%29.aspx (Here’s a link to some code in c# that you could migrate to Xojo : https://stackoverflow.com/questions/8657470/how-to-know-the-network-bandwidth-used-at-a-given-time)

  5. You could read up on https://msdn.microsoft.com/en-us/library/windows/desktop/aa366072(v=vs.85).aspx and implement it directly with API calls.

Your internet speed is going to flucuate quite a bit, depending on any other traffic on you LAN, the load on the computer doing the test, the network infrastructure between point A and point B…

And 1Mbps is rather “slow” to be honest… I have a middle tier package with my ISP and get 62Mbps down, and 6Mbps up

And at best you would detect those flucuations I mentioned, (or a drop in speed if there is a technical issue)… but on average, the speed you see is the speed you will get, as it is determined by your ISP in the end.

Hi guys! Thanks both for taking the time to answer. I notice that maybe I haven’t explained in the best terms exactly what I am trying to achieve. In the meantime I found an application that shows what I also want to achieve in a Xojo app.

More exactly I am talking about http://www.nirsoft.net/utils/network_traffic_view.html

Apparently it captures the network traffic using winpcap and has a Display Filter Option (from the Options menu) from where I can filter out items (apps) with a traffic speed of less then XX kB/sec.

The same output I also want to achieve in my Xojo app and apparently I might need to use the winpcap library.