Как проверить, является ли сетевое соединение полнодуплексным или полудуплексным - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь отобразить в своем приложении C # Winforms, если соединение Ethernet является полнодуплексным или полудуплексным. Я не уверен, есть ли у нас какой-либо 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 голосов
/ 17 января 2019
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();
        }
    }
}
...