【问题标题】:How to get fqdn of ip addresses in c#?如何在c#中获取ip地址的fqdn?
【发布时间】:2011-02-24 11:21:54
【问题描述】:

在一台机器上可能有多个可用的 IP 地址。如何找出所有所属的完全限定域名 (fqdn)?

更新:

我尝试了以下方法:

IPHostEntry he = Dns.GetHostEntry(Environment.UserDomainName);
foreach (IPAddress ipAddress in he.AddressList)
{
    string x = ipAddress.ToString();
    string y = Dns.GetHostEntry(ipAddress.ToString()).HostName;
}

我有一台有 2 个 IP 地址的机器,使用它们的 fqdn 的 ping 会返回正确的 IP。但是,上面的代码总是返回第一个 IP 的一个 fqdn。

我的设置如下:

IP1:
123.123.123.123
姓名1

IP2:
456.456.456.456
名称2

ping 和 nslookup 都返回正确的值。

问题是两行

Dns.GetHostEntry("123.123.123.123").HostName;
Dns.GetHostEntry("456.456.456.456").HostName;

返回“Name1”(而不是“Name1”和“Name2”)。

但是,代码

Dns.GetHostEntry("Name1").HostName;
Dns.GetHostEntry("Name2").HostName;

正常工作。

【问题讨论】:

  • 有趣的是,单独的计算机名称在两个查找中当然是相同的。也许您应该尝试告诉 System.Net 通过 IP2 上的连接查找 IP2 ?

标签: c# .net fqdn


【解决方案1】:

您将每个 IP 地址解析为 netbios 名称。

Dim hostEntry As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry("192.168.115.54")
Console.WriteLine(hostEntry.HostName)

例如,如果我解析我的 IP,我会得到:

PC-MYNAME.MYDOMAIN.local

那么你也可以使用 ActiveDirectory 来枚举 CurrentForrest(可用域)。

【讨论】:

  • 感谢您的回复。如何以编程方式获取所有 IP 地址的列表?
  • 我的意思是我机器的所有IP地址:-)
  • IPAddress[] allLocalAddresses = Dns.GetHostAddresses(string.Empty);
  • 这不提供 FQDN。
猜你喜欢
  • 2011-06-05
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 2017-01-26
  • 2011-01-02
  • 2016-05-10
  • 1970-01-01
  • 2011-04-04
相关资源
最近更新 更多