How do I programmatically determine the network connection link speed for an active network connection - like Task Manager shows you in the Networking tab? I'm not really after the bandwidth available, just a figure for the current connection, e.g. 54Mbps, 100Mbps etc.
-
Win32_NetworkAdapterWMI class can help you (Speedproperty). It returns the value 54000000 for my WiFi adapter connected to a WiFi-g access point.porkchop : Thanks for the reply. Unfortunately, the explanation of that property states, "This property has not been implemented yet. It returns a NULL value by default"?Mehrdad Afshari : You are right about MaxSpeed. I remember I have worked with the Speed property. I'm sure Speed works on Vista and Windows 7. -
.NET way how to know adapter speed is
IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties(); NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); if ( nics != null ) for (int i = 0; i < nics.Length; i++) Console.WriteLine("Adapter '{0}' speed : {1}", nics[i].Name, nics[i].Speed);Some adapters are tunnels, so their speed will be returned as 0. Read NetworkInterface documentation on the MSDN for more information.
-
In the end I found the
Win32_PerfRawData_Tcpip_NetworkInterfaceWMI class, as I need to support legacy platforms which, unfortunately, theWin32_NetworkAdapterdoesn't do.Win32_PerfRawData_Tcpip_NetworkInterfacehas aCurrentBandwidthproperty which gives me what I need on all required platforms (I realise I said I didn't need "bandwidth" but its acceptable and appears to return the "nominal bandwidth" of the adapter anyway).Thanks to all those who posted, pointing me in the right direction.
0 comments:
Post a Comment