C# 在富文本框中显示IP地址

C# 在富文本框中显示IP地址,c#,ip,C#,Ip,我的C#申请有问题。我试图通过简单地点击一个按钮,让所有IP显示在windows窗体的文本框中。我目前有一个工作基础: private void btnIP_Click(object sender, EventArgs e) { NetworkInterface[] ipadapters = NetworkInterface.GetAllNetworkInterfaces(); string iptemplate = @" Net

我的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;
        }
然而,我只是不明白我是否可以使用

使用System.Net.NetworkInformation

如果有人能向我解释我如何从那里获取IP并将其显示出来,这将非常有帮助。我见过有人查询DNS以检索主机名等,但我只想显示所有适配器的所有IPv4和IPv6地址


我只是不明白。我知道我需要保留foreach()方法,但不确定如何构建此代码以使其工作。注意:我已经为所有适配器创建了一个描述和所有内容,但我已经创建了一个单独的按钮,专门用于IP

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

基本上是这样的:

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

哪一点你不明白?因此,这个问题会深入到一些细节:……除非您准确地解释您不理解的内容。我以前做过这件事,但我是为CompactFramework应用程序做的,并且使用了大量的P/Invoke,我不确定是否存在更易于管理的方法来做到这一点。但是,你是正确的,你不应该查询DNS!!这样看来,它只会显示1个适配器(随机)。我想生成整个适配器列表,然后只显示IP地址,包括适配器的名称和计算机的主机名。@Maddox您使用的是WPF还是Winforms?为了确认,您希望只显示计算机的本地IP地址/适配器名称?WinForms,我正在尝试列出本地计算机上的所有适配器。包括:这些适配器的名称、说明和IP地址(v4、v6)。
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
   }
}
string hostName = Dns.GetHostName();

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