.Net Dns.GetHostAddresses(Domain) - 返回ipv6地址

时间:2012-07-22 20:12:14

标签: .net

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

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

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

有人能告诉我如何使用.Net获取IPv6地址,即使您恰好位于仅限IPv4的网络中吗?

由于

2 个答案:

答案 0 :(得分:0)

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

尝试:

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

你得到了什么结果?

答案 1 :(得分: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());
     }
}