我有这种方法来通过其计算机名称获取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;
}
}
打印的内容与该函数的最终返回值不同。
问题是...
为什么我每次都会得到不同的结果?
答案 0 :(得分:0)
之所以获得不同的结果,是因为您的服务器似乎有4个具有不同IP地址的不同网络接口。由于您的函数仅返回找到的第一个地址,并且顺序似乎是随机的,因此您将始终获得服务器的4个地址之一