Dns.GetHostAddresses返回不同的结果

时间:2018-08-11 09:25:19

标签: c# .net dns ip reverse-dns

我有这种方法来通过其计算机名称获取IIS服务器的IP v4,每次运行此功能时,它会给我不同的结果(它在4个不同的IP地址之间交替,其中三个在相同的范围内其中一个在192.168.xx范围内)

(3, 3) -> (3, 5)

此外,我观察到的一件奇怪的事情是,为 public static string GetIpFromPcName(string PcName = null) { try { // in order to get ip v4 address // look here: https://stackoverflow.com/questions/6668810/how-do-i-determine-the-local-host-s-ipv4-addresses // can a pc have multiple ips? if (string.IsNullOrEmpty(PcName)) return null; string IP4Address = String.Empty; var hostEntry = Dns.GetHostEntry(PcName); var ipaddresses = Dns.GetHostAddresses(PcName); Console.WriteLine("HostName: {0}", hostEntry.HostName); Console.WriteLine("Aliases:"); foreach (var entry in hostEntry.Aliases) { Console.WriteLine("\t{0}", entry); } Console.WriteLine("Addresslist: "); foreach (var entry in hostEntry.AddressList) { Console.WriteLine("\t{0}", entry.ToString()); } foreach (IPAddress IPA in Dns.GetHostAddresses(PcName)) { if (IPA.AddressFamily == AddressFamily.InterNetwork) { IP4Address = IPA.ToString(); break; } } return IP4Address; } catch (Exception ex) { Console.WriteLine("Error in getting ip address for {0}", PcName); return null; } } 打印的内容与该函数的最终返回值不同。

问题是...

  

为什么我每次都会得到不同的结果?

1 个答案:

答案 0 :(得分:0)

之所以获得不同的结果,是因为您的服务器似乎有4个具有不同IP地址的不同网络接口。由于您的函数仅返回找到的第一个地址,并且顺序似乎是随机的,因此您将始终获得服务器的4个地址之一

相关问题