首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows 7与XP GetIsNetworkAvailable()的区别?

Windows 7与XP GetIsNetworkAvailable()的区别?
EN

Stack Overflow用户
提问于 2012-06-14 14:27:08
回答 1查看 691关注 0票数 1

我编写了代码,在机器上用可用的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读取“媒体断开”

下面是代码块:

代码语言:javascript
复制
_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实现它的价值

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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.

保留的范围。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11035230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档