【问题标题】:why dns.gethotentry() method return addresslist as empty?为什么 dns.gethostentry() 方法返回地址列表为空?
【发布时间】:2015-07-28 12:36:50
【问题描述】:

我使用以下代码获取IP地址:

var ip =  Dns.GetHostEntry(host);                     
var ipaddress = ip.AddressList.FirstOrDefault(x => x.AddressFamily == AddressFamily.InterNetwork).ToString();

我可以从命令提示符 ping 这个主机名。

但是当我使用GethostEntry() 时,它会正确返回主机名。

但是AddressList 是空的。

而且它也不起作用,而我正在给本地机器 IP 地址。
为什么会这样?

【问题讨论】:

  • host 变量的内容是什么?我刚刚用Dns.GetHostEntry("google.com") 进行了测试,结果包含一个AddressList,有16 个条目。
  • 拆分您的问题:ip.AddressList 是否为空,您用于 FirstOrDefault 的过滤器是否不返回地址?转储您在 ip.AddressList 中找到的所有元素

标签: c# dns


【解决方案1】:

尝试使用此代码:

PHostEntry host;
 string localIP = "";
host = Dns.GetHostEntry(Dns.GetHostName());
  foreach (IPAddress ip in host.AddressList)
{
 if (ip.AddressFamily == AddressFamily.InterNetwork)
 {
    localIP = ip.ToString();
   }
}
 return localIP;

【讨论】:

  • 虽然我在更多问题中看到了这个解决方案,但由于某种原因,它在 PC 上运行得非常好,但在移动设备上却不行。设备连接正确(在同一个 wifi 网络中)。有什么想法吗?
猜你喜欢
  • 2010-09-14
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2023-01-05
相关资源
最近更新 更多