1

マシンで使用可能なIPv4NICardをメニューに追加するコードを作成しました。XPマシンでテストされており、すべて問題なく動作しているようです(XPでも構築されています)。

Windows 7でテストしたところ、1つが切断されていても、常に2つのIPアドレスが入力されていました。Win7マシンの結果は次のとおりです。

WLAN接続
LAN切断

観測:正しいWLANアドレスが表示され、不正なLANアドレスが表示されます(192.168に接続されている場合は別のネットワーク番号ですが、メニューに入力されているLANアドレスは169.254です)
期待:正しいWLANアドレスが表示され、LANがありません表示(切断されています)
ipconfigはLANの「メディア切断」を読み取ります

WLAN接続
LAN接続

観測:正しいWLANアドレスが表示され、正しいLANアドレスが表示
される期待される:正しいWLANアドレスが表示される、正しいLANアドレスが表示される

ipconfigが正しいアドレスを読み取る

WLAN切断
LAN接続

観察済み:正しい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);
            }
        }
    }
}

VS2010で4.0.NETを使用する価値

4

1 に答える 1

2

NIC が接続されているかどうかを確認するには、NetworkInterface.OperationalStatusプロパティを確認する必要があります。

LAN が切断されたときの「奇妙な」IP アドレスは、APIPA (Automatic Private IP Addressing) から取得されます。Windows Vista で導入された「機能」:

...DHCP サーバーが使用できない場合に、IP アドレスとサブネット マスクを使用して自動的に構成する Windows Vista の機能。IP アドレスの範囲は 169.254.0.1 から 169.254.255.254 で、特に Microsoft のために予約されている範囲です。

于 2012-06-14T14:37:37.073 に答える