Is there a way to detect the network speed and bandwidth usage in C#? Even pointers to open-source components are welcome.
3 Answers
Try using the System.Net.NetworkInformation classes.  In particular, System.Net.NetworkInformation.IPv4InterfaceStatistics ought to have some information along the lines of what you're looking for.
Specifically, you can check the bytesReceived property, wait a given interval, and then check the bytesReceived property again to get an idea of how many bytes/second your connection is processing.  To get a good number, though, you should try to download a large block of information from a given source, and check then; that way you should be 'maxing' the connection when you do the test, which should give more helpful numbers.
 
    
    - 36,610
- 17
- 75
- 94
 
    
    - 23,995
- 17
- 79
- 116
You should be able to calculate everything you need from the IPGlobalStatistics class.
 
    
    - 55,384
- 17
- 145
- 179
If you only care about the negotiated speed, you can look at the NetworkInterface.Speed property
 
    
    - 27
- 8
 
    