gpt4 book ai didi

c# - 查询 dns 别名

转载 作者:太空狗 更新时间:2023-10-29 21:31:30 25 4
gpt4 key购买 nike

我找到了一些 code来自 msdn 站点(下面包含代码),看起来它将返回给定服务器的所有 dns 别名。我已经在一个 cosole 应用程序中实现了代码,它应该允许我输入服务器的主机名并且它应该返回所有 dns 别名。我输入我们域中已知具有别名的服务器的主机名(我可以 ping 主机和别名,它们都解析为相同的 IP),但此代码未找到别名。显然我缺乏对 dns 别名和/或代码的理解......请教育我......

static void Main(string[] args)
{
Console.Write("Host? (Enter for local): ");
string strHost = Console.ReadLine();
if (strHost.Trim().Length == 0)
{
strHost = System.Net.Dns.GetHostName();
}

try
{
//System.Net.IPAddress hostIPAddress = System.Net.IPAddress.Parse(strHost);
System.Net.IPHostEntry hostInfo = System.Net.Dns.GetHostByName(strHost);//.GetHostByAddress(hostIPAddress);
// Get the IP address list that resolves to the host names contained in
// the Alias property.
System.Net.IPAddress[] address = hostInfo.AddressList;
// Get the alias names of the addresses in the IP address list.
String[] alias = hostInfo.Aliases;

Console.WriteLine("Host name : " + hostInfo.HostName);
Console.WriteLine("\nAliases :");
for (int index = 0; index < alias.Length; index++)
{
Console.WriteLine(alias[index]);
}
Console.WriteLine("\nIP address list : ");
for (int index = 0; index < address.Length; index++)
{
Console.WriteLine(address[index]);
}
}
catch (System.Net.Sockets.SocketException e)
{
Console.WriteLine("SocketException caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
catch (FormatException e)
{
Console.WriteLine("FormatException caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
catch (ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
catch (Exception e)
{
Console.WriteLine("Exception caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}

Console.WriteLine("Any key to continue...");
Console.ReadKey();
}

最佳答案

对于 DNS 名称,只有当您查询的名称具有 CNAME 记录时,别名列表才会为非空;然后,别名列表将为您提供为获得最终名称而必须解析的所有 CNAME。

考虑以下问题:

  • 不可能(即协议(protocol)不支持)找出给定名称的所有 CNAME。这是不可行的,因为它需要搜索整个全局 DNS。
  • 别名不仅可能发生在 CNAME 上,还可能发生在具有相同地址 (A) 记录的多个主机名上。在这种情况下,并不是一个是另一个的别名,而是它们只是指向同一个 IP 地址。同样,该协议(protocol)不支持查找 IP 地址的所有 A 记录(尽管反向查找可能会找到一些)。

关于c# - 查询 dns 别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1474612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com