【问题标题】:Detect when ethernet cable is plugged检测以太网电缆何时插入
【发布时间】:2015-12-29 07:38:00
【问题描述】:

我正在尝试检测以太网电缆何时插入或拔出,​​但我遇到了一些问题,我不知道我这样做是否好。

我正在使用NetworkChange.NetworkAddressChanged 检测网络何时发生变化

然后NetworkInterface.GetAllNetworkInterfaces() 用于检查以太网连接是否可用属性.OperationalStatus

但是当我在所有网络接口中搜索以太网连接时,它会返回我正在寻找的内容,但它总是返回蓝牙连接

代码如下:

public Form1()
{
    InitializeComponent();

    NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(AddressChangedCallback);
    Console.ReadLine();
}

static void AddressChangedCallback(object sender, EventArgs e)
{
    NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
    foreach (NetworkInterface myInterface in adapters)
    {
        //if (n.Description.ToLower().Contains("ethernet")){
        //if (n.NetworkInterfaceType.ToString().ToLower().Contains("ethernet")){

        IPInterfaceProperties properties = n.GetIPProperties();
        if (myInterface.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
        {
            Console.WriteLine(myInterface.Description + " ........... :  " + myInterface.OperationalStatus);
            Console.WriteLine("NetworkInterfaceType : " + myInterface.NetworkInterfaceType);
        }
    }
}

一开始,我试图检查连接的名称,并查看是否包含“以太网”一词,但有时会出现(如果我没记错的话)连接名称不包含“以太网”。



对于始终保持良好连接(不使用蓝牙),您有什么建议吗?
我的方法错了吗?


我正在 Surface Pro 3 上对其进行测试...但也许我因此遇到了蓝牙问题? 尽管如此,即使在这样的设备上,我也需要它。

【问题讨论】:

  • 蓝牙设备可以提供很多服务,其中之一网络连接。如果驱动程序将网络接口呈现为以太网卡,那么对于操作系统来说,它就是以太网卡。
  • 你为什么特别想知道是否有拔掉的电缆?您打算如何处理这些信息?
  • @Tragedian 必须在拔下电缆时打开 wifi 并在连接电缆时将其关闭
  • @PanagiotisKanavos 好的,谢谢,我想过,但如果这是真的,我认为这不是检查电缆是否插入的好方法
  • 如果你的蓝牙连接永远不会改变,你可以硬编码一个过滤器,并检测是否有其他连接。

标签: c# .net network-programming ethernet


【解决方案1】:

这可以通过检查其运行状态来完成:

foreach (System.Net.NetworkInformation.NetworkInterface net in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces())
{
     if (net.OperationalStatus == 
        System.Net.NetworkInformation.OperationalStatus.Up)
           Console.WriteLine("N/w connected");
     else
           Console.WriteLine("N/w not connected");
}

【讨论】:

  • 嗨!那是 2 年前,我不记得我最终做了什么,但离那不远了。我可能在 System.Net.NetworkInformation 中使用了一些与 WMI 相关的功能来检查连接。我工作得很好,我可以检查连接来自哪个网络适配器,这对我帮助很大。我认为 Daniel Frederico Lins Leite 的回应对我解决问题帮助很大。
  • 你好,我最近工作的时候偶然发现了这个帖子,发现了同样的问题。我可以找到解决方案,因此希望分享。谢谢!
【解决方案2】:

此链接显示如何使用 Powershell 执行此操作,但其中一种情况使用 WMI。

http://www.powershellmagazine.com/2013/04/04/pstip-detecting-wi-fi-adapters/

这个链接显示了一个有趣的属性,有时可以提供帮助:

https://msdn.microsoft.com/en-us/library/aa394217(v=vs.85).aspx

网关成本指标

数据类型:uint16数组

访问类型:只读数组

要使用的整数成本度量值(范围从 1 到 9999) 计算最快、最可靠或资源最少的 路线。这个论点与 DefaultIPGateway 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-05
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多