如何比較兩個IP地址?比較兩個ip與C#
string ip1 = "123.123.123.123";
string ip2 = "124.124.124.124";
我需要一些這樣的:
if(ip1 == ip2)
{
//true
}
如何比較兩個IP地址?比較兩個ip與C#
string ip1 = "123.123.123.123";
string ip2 = "124.124.124.124";
我需要一些這樣的:
if(ip1 == ip2)
{
//true
}
方法似乎System.Net.IPAddress定義它自己的Equals重寫所以這應該工作:
IPAddress ip1 = IPAddress.Parse("123.123.123.123");
IPAddress ip2 = IPAddress.Parse("124.124.124.124");
if(ip1.Equals(ip2))
{
//...
}
@PhucNguyen - 'IPAddress.Parse(「172.16.0.150」)。Equals(IPAddress.Parse(「172.16.1.216」))'如我所願返回false。 – Lee 2017-07-13 07:53:04
類型IPAddress
在BCL支持平等和可用於這一目的。
public static bool IsSameIPAddress(string ip1, string ip2) {
IPAddress leftIP = IPAddress.Parse(ip1);
IPAddress rightIP = IPAddress.Parse(ip2);
return leftIP.Equals(rightIP);
}
有幾個人想知道爲什麼直線比較是不夠的。爲什麼IP地址可以用10進制和十六進制表示法合法表示。所以相同的IP地址可以有多個字符串表示。
例如
var left = "0x5.0x5.0x5.0x5";
var right = "5.5.5.5";
IsSameIPAddress(left,right); // true
left == right; // false
退房的Equals上System.Net.IPAddress
的IPAddress
類(System.Net)有一個重載的Equals方法來比較地址,而不是對象實例,這是你想要的。這裏的字符串比較可能很危險,因爲IP地址可能有多個字符串表示。 http://msdn.microsoft.com/en-us/library/system.net.ipaddress.equals%28v=VS.71%29.aspx
IPAddress.Parse(ip1).Equals(IPAddress.Parse(ip2))
IPAddress addr1 = IPAddress.Parse(ip1);
IPAddress addr2 = IPAddress.Parse(ip2);
return (addr1.Equals(addr2));
你怎麼會剛剛發佈不要滿足您的需求的代碼? – Luis 2010-04-27 15:35:34
@Luis,因爲相同的IP地址可以有不同的字符串表示形式,因爲這些數字可以用十六進制和基本10表示法合法表示。 – JaredPar 2010-04-27 15:41:08
@路易斯:試試這個:'ping 2130706433'。 – 2010-04-27 21:11:05