如何在C#中获取IP地址的FQDN?

4

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

更新:

我尝试了以下方法:

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

我有一台机器有两个IP地址,使用它们的fqdn进行ping测试可以返回正确的IP地址。然而,以上代码总是返回第一个IP地址的fqdn。

我的设置如下:

IP1:
123.123.123.123
Name1

IP2:
456.456.456.456
Name2

无论是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? - Stefan Steiger
1个回答

2
您可以将每个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地址的列表? - doab
我的意思是我机器的所有IP地址 :-) - doab
IPAddress[] allLocalAddresses = Dns.GetHostAddresses(string.Empty); 获取本地所有IP地址。 - David Yaw
4
这并没有提供完全限定域名(FQDN)。 - SimpleGuy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接