3

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

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

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

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

谢谢

4

2 回答 2

0

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

尝试:

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

你得到什么结果?

于 2012-07-22T21:09:52.490 回答
0

这就是您可以将 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());
     }
}
于 2019-01-21T02:08:58.273 回答