我对此进行了相当多的搜索,但我仍然没有运气。问题是,如果我从我的服务器nslookup,如果主机有IPv6地址,我在列表中看到它。但是,如果我使用.Net System.Net的Dns.GetHostAddresses(域),它只返回IPv4地址。
通过大量阅读,我发现:如果本地计算机没有安装IPv6,则会从GetHostAddresses方法的结果中过滤掉IPv6地址。
我在IPv4网络中。我不需要ping或具有实际的网络连接,我只需要为主机返回一个IPv6地址(如果它有一个),就像我说的那样,可以使用来自同一服务器的nslookup。
有人能告诉我如何使用.Net获取IPv6地址,即使您恰好位于仅限IPv4的网络中吗?
由于
答案 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());
}
}