在富文本框中显示IP地址

时间:2012-12-13 19:01:13

标签: c# ip

我正在制作一个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的单独按钮。

3 个答案:

答案 0 :(得分:1)

string hostName = Dns.GetHostName();

string myIP = Dns.GetHostByName(hostName).AddressList[0].ToString();

答案 1 :(得分:0)

以下是关于如何执行此操作的精彩文章。它提供了您需要的所有信息。

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

基本上就是这样:

var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
    var localIP = ip.ToString();
    //do more here...
}

答案 2 :(得分:0)

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
   }
}