【问题标题】:Dns.GetHostAddresses() only returns IPv6 addresses . How to get Local IPv4?Dns.GetHostAddresses() 只返回 IPv6 地址。如何获取本地 IPv4?
【发布时间】:2013-08-24 13:16:19
【问题描述】:

根据Dotnet参考,

Dns.GetHostAddresses("") 

应该返回 IPv4 地址。但是我在我的 Windows 7 机器上只获得 IPv6。我在不同的 Windows 7 上尝试了该程序,结果仍然相同。它只在 XP 机器上正确返回 IPv4。

如果我尝试,

Dns.GetHostEntry("");

它现在正确返回一个 IPv4 和一个 IPv6 。 如何从 GetHostAddresses() 获取 IPv4,因为我不想使用 GetHostEntry()。它会查找 DNS。

另外,假设有 1 个网卡的计算机,代码返回一个包含 2 个相同 IPv6 的数组。这正常吗?

【问题讨论】:

  • 你试过什么..?你试过先看这里吗MSDN GetHostAddres
  • 我尝试了 Dns.GetHostAddresses("") ,但我得到了如上所述的意外结果。我希望有人能给我一个线索。

标签: c# .net ip-address ipv6 ipv4


【解决方案1】:

这对我有用:

IPHostEntry ipHostEntry = Dns.GetHostEntry("example.com");
IPAddress ipAddress = ipHostEntry.AddressList.First(a => a.AddressFamily == AddressFamily.InterNetwork); // ipv4

拥有两个 ipv6 地址是正常的,一个包含您的 MAC 地址以保证其唯一性,另一个不增加您的隐私/安全性。但我不知道为什么你的会一模一样

【讨论】:

  • 我应该补充一下,我正在尝试获取自己的本地 LAN ip。 Dns.GetHostEntry() 查询 DNS,所以我想改用 GetHostAddresses("")
  • 将“example.com”替换为“”或 Dns.GetHostName() 会发生什么?
  • GetHostEntry() & GetHostName() 工作正常,但我遇到的问题是 .GetHostAddresses() 只返回 IPv6 地址
  • 我也在运行 Windows 7。当我在 msdn.microsoft.com/en-us/library/… 上尝试示例代码时,我返回:GetHostAddresses() 返回:fe80::10a5:fae2:f62c:2503%13 10.2.4.22不知道为什么你只得到 ipv6。抱歉,我无法提供更多帮助。
  • 这对我不起作用。在我只有 ipv4 的机器上,如果我使用 node.js 并执行require('dns').lookup("google.com", {all:true}, (err, addresses) => { console.log(addresses); });,我会同时获得 ipv4 和 ipv6 地址,但如果我使用Dns.GetHostEntry("google.com"),则返回的IpHostEntry.AddressList 只有 ipv4 地址。
猜你喜欢
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 2011-02-16
相关资源
最近更新 更多