我有我需要比较,并告诉他们是否代表相同的主机,例如一些主机名:如何正确地比较主机名
localhost
127.0.0.1
machineName
什么是做它在C#中最可靠的方法?现在我在做,像:
private bool CompareHosts(string host1, string host2)
{
UriBuilder builder1 = new UriBuilder();
builder1.Host = Dns.GetHostAddresses(host1)[0].ToString();
var uri1 = builder1.Uri;
UriBuilder builder2 = new UriBuilder();
builder2.Host = Dns.GetHostAddresses(host2)[0].ToString();
var uri2 = builder2.Uri;
return Uri.Compare(uri1, uri2, UriComponents.Host,
UriFormat.Unescaped, StringComparison.OrdinalIgnoreCase) == 0;
}
我不包括错误处理的主机地址数组,但我不知道做什么,如果它会返回一个以上的地址,岂不是他们会代表不同的机器?有没有更好的方法来比较它们?我需要检查这些主机是否指向同一台机器。
也请不要忘记':: 1'和'0:0:0:0:0:0:0:1'; p –
单个主机名可以有多个IP地址是正确的 - 考虑大小写5网卡的PC的... 见http://support.microsoft.com/kb/110703确认。 –
@RB - 少见的5个网卡只是多个IP地址已分配给单个连接。 –