当我尝试使用
Dns.GetHostEntry
解析计算机上的特定域名时,它会返回一个 IP 地址(AddressList
中只有一个地址),但是当我在同一网络上的服务器上运行同一行代码时,它返回一个完全不同的地址。
不幸的是,我无法透露实际的域名,但是两个字符串(example.domain.com)完全相同。
我使用 mono 和 C# 交互是为了更容易演示,当我运行实际程序时也会发生同样的情况。
hosts
文件在两台电脑上都完好无损,因此不会干扰ip查找。
所以这是我的问题:为什么两台计算机为同一个域名返回两个不同的IP地址?如何强制程序只返回一个地址/包含域名指向的所有地址的列表?
公共静态字符串 GetLocalIPAddress() {
var host = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
foreach (var ip in host.AddressList)
{
if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
return ip.ToString();
}
}
}