【问题标题】:.Net Dns.GetHostAddresses(Domain) - return ipv6 address.Net Dns.GetHostAddresses(Domain) - 返回 ipv6 地址
【发布时间】:2012-07-22 20:12:13
【问题描述】:

我已经对此进行了很多搜索,但仍然没有任何运气。问题是,如果我从我的服务器 nslookup,如果主机有 IPv6 地址,我会在列表中看到它。但是,如果我使用 .Net System.Net 的 Dns.GetHostAddresses(Domain),它只会返回 IPv4 地址。

经过大量阅读,我发现:如果本地计算机没有安装 IPv6,则从 GetHostAddresses 方法的结果中过滤 IPv6 地址。

我在仅 IPv4 的网络中。我不需要 ping 或具有实际的网络连接,我只需要返回一个主机的 IPv6 地址(如果有的话),就像我说的,它可以与来自同一服务器的 nslookup 一起使用。

谁能告诉我如何使用 .Net 获取 IPv6 地址,即使您碰巧在仅 IPv4 的网络中?

谢谢

【问题讨论】:

  • 什么是“域”,您传递给 GetHostAddresses 的东西?

标签: .net


【解决方案1】:

如果我调用 GetHostAddresses("localhost") 我会同时获得 IPV4 和 IPV6 地址。因此,在您的网络中,无论域包含什么,都没有分配 IPv6 地址。

试试:

var addresses = Dns.GetHostAddresses(Dns.GetHostName());

你得到了什么结果?

【讨论】:

    【解决方案2】:

    这是您可以将 IPV4 地址转换为 IPV6 映射地址的方法。

    IPAddress ipv4Address = null;
    IPAddress ipv6Address = null;
    IPAddress[] ipAddresses = Dns.GetHostAddresses(hostName);
    
    foreach (IPAddress ip in ipAddresses)
    {
         if (ip.AddressFamily == AddressFamily.InterNetwork)
         {
             ipv4Address = ip;
             ipv6Address = ip.MapToIPv6();
             Debug.Writeline("ipv4 address changed to ipv6 address " + ipv6Address.ToString());
         }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-08-24
      • 2018-02-10
      • 1970-01-01
      • 2010-12-16
      • 2013-07-20
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多