【问题标题】:Display IP Addresses in a Rich text box在富文本框中显示 IP 地址
【发布时间】:2012-12-13 19:01:12
【问题描述】:

我正在制作的 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。

【问题讨论】:

  • 你有什么不明白的地方?这个 SO 问题涉及到一些细节:stackoverflow.com/questions/1069103/… ...直到您准确解释您不理解的内容。
  • 我以前做过这个,但我是为一个 CompactFramework 应用程序做的,并且使用了很多 P/Invokes,我不确定是否存在更管理的方法来做到这一点。但是,您是正确的,您应该必须查询 DNS !!

标签: c# ip


【解决方案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
   }
}

【讨论】:

  • 这样只会显示 1 个适配器(随机)。我想建立整个适配器列表,然后只显示 IP 地址,包括适配器名称和计算机的顶部主机名。
  • @Maddox 您使用的是 WPF 还是 Winforms?并确认一下,您是否只想显示计算机的本地 IP 地址/适配器名称?
  • WinForms 我正在尝试列出本地计算机上的所有适配器。包括:这些适配器的名称、描述和 IP 地址(v4、v6)。
【解决方案2】:
string hostName = Dns.GetHostName();

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 2014-02-09
      • 2010-10-14
      • 1970-01-01
      • 2019-06-10
      相关资源
      最近更新 更多