1

我正在制作的 C# 应用程序有问题。我试图通过简单地单击一个按钮来让所有 IP 显示在 Windows 窗体内的文本框中。我目前有一个可以使用的基础:

    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 回答
1
string hostName = Dns.GetHostName();

string myIP = Dns.GetHostByName(hostName).AddressList[0].ToString();
于 2020-09-02T11:26:56.590 回答
0

下面是一篇关于如何做到这一点的好文章。它提供了您应该需要的所有信息。

如何获取运行我的 C# 应用程序的服务器的 IP 地址?

基本上是这样的:

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 回答