检测以太网电缆何时插入
Detect when ethernet cable is plugged
我正在尝试检测以太网电缆何时插入或拔出,但我遇到了一些问题,我不知道我是否做得很好。
我正在使用 NetworkChange.NetworkAddressChanged
检测网络何时发生变化
然后 NetworkInterface.GetAllNetworkInterfaces()
检查以太网连接是否可用 属性 .OperationalStatus
.
但是当我在所有网络接口中搜索以太网连接时,它 return 我正在寻找的东西,但它 总是 return 我的蓝牙连接 一起吧。
这是代码:
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);
}
}
}
一开始,我试图检查连接名称并查看是否包含 "Ethernet" 单词,但它似乎(如果我没记错的话)有时连接名称不包含 "Ethernet".
您是否有一些始终保持良好连接(没有蓝牙)的提示?
我的方法错了吗?
我正在 Surface Pro 3 上对其进行测试...但也许我因此遇到了蓝牙问题?
尽管如此,我还是需要它在这样的设备上工作。
此链接显示如何使用 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
GatewayCostMetric
Data type: uint16 array
Access type: Read-only Array
of integer cost metric values (ranging from 1 to 9999) to be used in
calculating the fastest, most reliable, or least resource-intensive
routes. This argument has a one-to-one correspondence with the
DefaultIPGateway property.
这可以通过检查其运行状态来完成:
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");
}
我正在尝试检测以太网电缆何时插入或拔出,但我遇到了一些问题,我不知道我是否做得很好。
我正在使用 NetworkChange.NetworkAddressChanged
检测网络何时发生变化
然后 NetworkInterface.GetAllNetworkInterfaces()
检查以太网连接是否可用 属性 .OperationalStatus
.
但是当我在所有网络接口中搜索以太网连接时,它 return 我正在寻找的东西,但它 总是 return 我的蓝牙连接 一起吧。
这是代码:
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);
}
}
}
一开始,我试图检查连接名称并查看是否包含 "Ethernet" 单词,但它似乎(如果我没记错的话)有时连接名称不包含 "Ethernet".
您是否有一些始终保持良好连接(没有蓝牙)的提示?
我的方法错了吗?
我正在 Surface Pro 3 上对其进行测试...但也许我因此遇到了蓝牙问题? 尽管如此,我还是需要它在这样的设备上工作。
此链接显示如何使用 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
GatewayCostMetric
Data type: uint16 array
Access type: Read-only Array
of integer cost metric values (ranging from 1 to 9999) to be used in calculating the fastest, most reliable, or least resource-intensive routes. This argument has a one-to-one correspondence with the DefaultIPGateway property.
这可以通过检查其运行状态来完成:
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");
}