我有我需要比較,並告訴他們是否代表相同的主機,例如一些主機名:如何正確地比較主機名
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地址已分配給單個連接。 –