如何检查网络连接是全双工还是半双工

时间:2019-01-17 18:19:43

标签: c# winforms network-interface

如果以太网连接是全双工或半双工,我试图在C#Winforms应用程序中显示。我不确定是否要检查任何API。我一直在使用下面的代码来获取NetworkInterfaces

NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
 foreach (NetworkInterface adapter in adapters)
        {
            IPInterfaceProperties properties = adapter.GetIPProperties();
            IPv4InterfaceStatistics stats = adapter.GetIPv4Statistics();
            Console.WriteLine(adapter.Description);
            Console.WriteLine("Speed .....: {0}",adapter.Speed);                    
        }

上面的代码为我提供了适配器的描述,速度,NetworkInterfaceType,OperationalStatus等。我要查找的是连接是全双工还是半双工。

1 个答案:

答案 0 :(得分:1)

using System;
using System.Management;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //string deviceName = "TP-Link Wireless N PCI Express Adapter";

            ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\StandardCimv2");

            ObjectQuery query = new ObjectQuery($"SELECT * FROM MSFT_NetAdapter");// WHERE DriverDescription = \"{deviceName}\"");

            using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
            {
                using (ManagementObjectCollection queryCollection = searcher.Get())
                {
                    foreach (ManagementObject m in queryCollection)
                    {
                        Console.WriteLine($"{m["DriverDescription"]} : {m["FullDuplex"]}");
                    }
                }
            }

            Console.ReadKey();
        }
    }
}