我编写了代码,在机器上用可用的IPv4 NICards填充菜单。它已经在XP机器上进行了测试,看起来一切都很好(它也是建立在XP上的)。
我在Windows 7上测试了它,它总是填充2个IP地址,即使其中一个是断开的。以下是Win7机器的结果:
无线局域网连接的
局域网断开
注意:正确的WLAN地址显示,不正确的LAN地址显示(它甚至是一个不同的网络号码,它连接到192.168,但是菜单中填充的局域网地址是169.254)
期望:正确的WLAN地址显示,没有局域网显示(它是断开的)
ipconfig读取局域网的“媒体断开”
无线局域网连接的
局域网连接的
注意:正确的WLAN地址显示,正确的LAN地址显示
预期:正确的WLAN地址显示,正确的LAN地址显示
ipconfig读取正确地址
无线局域网断开
局域网连接的
注意:正确的WLAN地址显示,正确的LAN地址显示
预期:没有WLAN地址显示(断开连接),正确的LAN显示
ipconfig为WLAN读取“媒体断开”
下面是代码块:
_adapters.Clear();
if (NetworkInterface.GetIsNetworkAvailable())
{
NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in networkInterfaces)
{
foreach (UnicastIPAddressInformation addr in adapter.GetIPProperties().UnicastAddresses)
{
//This filters out IPv6 and Loopback NICs
if (addr.Address.AddressFamily == AddressFamily.InterNetwork
&& adapter.NetworkInterfaceType != NetworkInterfaceType.Loopback)
{ //This formats something like: 192.168.1.0 - Ethernet adapter Local Network Connection
_adapters.Add(addr.Address.ToString() + " - " + adapter.NetworkInterfaceType.ToString() + " adapter " + adapter.Name);
}
}
}
}在.NET上使用4.0 VS2010实现它的价值
发布于 2012-06-14 14:37:37
若要查看NIC是否已连接,应检查NetworkInterface.OperationalStatus属性。
当局域网断开时,“奇怪”IP地址来自APIPA (自动专用IP地址)。Windows Vista引入了一个“功能”:
Windows中的
...a功能在没有DHCP服务器时自动配置IP地址和子网掩码。IP地址范围为169.254.0.1至169.254.255.254,这是专门为Microsoft.
保留的范围。
https://stackoverflow.com/questions/11035230
复制相似问题