6

「IP アドレスと説明」の同期で問題が発生しました。

目的はこれです:

IPアドレスを取得し、説明は何ですか?

例:

| Atheros Azx1234 Wireless Adapter |

|192.168.1.55                      |

しかし、結果は思ったほどではなく…

これは私のコードです。気軽に試してみてください...

private void button1_Click(object sender, EventArgs e)
{
    NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
    IPHostEntry host;
    host = Dns.GetHostEntry(Dns.GetHostName());

    foreach (NetworkInterface adapter in interfaces)
    {
        foreach (IPAddress ip in host.AddressList)
        {
            if ((adapter.OperationalStatus.ToString() == "Up") && // I have a problem with this condition
                (ip.AddressFamily == AddressFamily.InterNetwork))
            {
                MessageBox.Show(ip.ToString(), adapter.Description.ToString());
            }
        }
    }
}

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

12

コードの問題は、特定のアダプターに関連付けられたIPアドレスを使用しないことです。すべてのIPアドレスをすべてのアダプターに一致させる代わりに、現在のアダプターに関連付けられているIPアドレスのみを使用します。

NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (var adapter in interfaces)
{
    var ipProps = adapter.GetIPProperties();

    foreach (var ip in ipProps.UnicastAddresses)
    {
        if ((adapter.OperationalStatus == OperationalStatus.Up)
        && (ip.Address.AddressFamily == AddressFamily.InterNetwork))
        {
            Console.Out.WriteLine(ip.Address.ToString() + "|" + adapter.Description.ToString());
        }
    }
}
于 2012-11-01T10:56:01.790 に答える