【问题标题】:Detecting Ethernet Port insertion/removal in my winforms application?在我的 winforms 应用程序中检测以太网端口插入/移除?
【发布时间】:2013-10-23 01:57:40
【问题描述】:

我想检测设备何时连接到运行我的应用程序的机器的以太网端口。我知道如何使用 USB 端口执行此操作,但问题是,端口不是 USB!

如果它是 USB 设备,我会简单地覆盖 WndProc 并捕获消息,如果它是 WM_DEVICECHANGE,那么我就赢了,我想知道对于任何可能插入的设备,它是否像这样简单进港了吗?

我不想知道是否有任何事情发生,或者设备是否正常工作,只是想知道是否有插入或移除。

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    我自己从未使用过它,但我认为NetworkChange.NetworkAvailabilityChanged 事件可能符合您的需求。

    更新

    一项简短的调查表明NetworkChange.NetworkAddressChanged 可能会更好:

    public static void Main()
    {
    
        NetworkChange.NetworkAddressChanged += (s, e) =>
        {
            NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
            foreach (var item in nics)
            {
                Console.WriteLine("Network Interface: {0}, Status: {1}", item.Name, item.OperationalStatus.ToString());
            }
        };
    
        string input = string.Empty;
        while (input != "quit")
        {
            input = Console.ReadLine();
        }
    }
    

    【讨论】:

      【解决方案2】:

      我不确定这是否完全适合您的需求,但您可以查看 System.Net.NetworkInformation.NetworkChange 类,它有 2 个您可以使用的事件:

      • NetworkAddressChanged
      • NetworkAvailabilityChanged

      在事件处理程序中,您可以检查所涉及的网络接口是否为以太网端口

      【讨论】:

        【解决方案3】:

        NetworkChange 类为您提供了一个 NetworkAvailabilityChanged 事件,当接口从向下切换到向上时触发,反之亦然。可能没有您想要的低级别,但您没有明确跟踪此事件的目标。

        【讨论】:

          猜你喜欢
          • 2011-05-11
          • 1970-01-01
          • 2015-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-27
          • 2011-07-03
          相关资源
          最近更新 更多