1

作成中の C# アプリケーションに問題があります。ボタンをクリックするだけで、Windowsフォーム内のテキストボックスにすべてのIPを表示しようとしています。私は現在、作業するためのベースを持っています:

    private void btnIP_Click(object sender, EventArgs e)
    {
         NetworkInterface[] ipadapters = NetworkInterface.GetAllNetworkInterfaces();
        string iptemplate = @"
        Network adapter: {0}
        IP:              {1}";

        string IPText = "";

        foreach (NetworkInterface AdapterIP in ipadapters)
        {

            IPText = IPText + String.Format(iptemplate,
            AdapterIP.Name,
            AdapterIP = ipadd());

        }
            txtOutput.Text = IPText;
        }

ただし、を使用してこれを実行できるかどうかはわかりません

using System.Net.NetworkInformation;

そこからIPを取得して表示する方法を誰かが説明してくれれば、とても助かります。DNS にクエリを実行してホスト名などを取得する人を見てきましたが、すべてのアダプターのすべての IPv4 および IPv6 アドレスを表示したいだけです。

私はそれを理解していません。foreach() メソッドを保持する必要があることはわかっていますが、このコードを構築して機能させる方法がわかりません。注: すべてのアダプターの説明とすべてに対して機能していますが、IP 専用の別のボタンを作成しました。

4

3 に答える 3

1
var ipEntry = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in ipEntry.AddressList)
{
   if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
   {
    //IPv6
   }
   else if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
   {
    //IPv4
   }
}
于 2012-12-13T19:16:18.473 に答える
0

Below is a great post about how to do this. It provides all the info you should need.

How to get the IP address of the server on which my C# application is running on?

Basically it's this:

var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
    var localIP = ip.ToString();
    //do more here...
}
于 2012-12-13T19:11:52.350 に答える