当前位置:  开发笔记 > 编程语言 > 正文

用C#比较两个ip

如何解决《用C#比较两个ip》经验,为你挑选了2个好方法。



1> Lee..:

似乎System.Net.IPAddress定义了它自己的Equals覆盖,所以这应该工作:

IPAddress ip1 = IPAddress.Parse("123.123.123.123");
IPAddress ip2 = IPAddress.Parse("124.124.124.124");

if(ip1.Equals(ip2))
{
    //...
}



2> JaredPar..:

IPAddressBCL中的类型支持相等,可用于此目的.

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地址可以具有多于1个字符串表示.

例如

var left = "0x5.0x5.0x5.0x5";
var right = "5.5.5.5";
IsSameIPAddress(left,right); // true
left == right; // false


@JaredPar:你的第一个代码中的`leftIP == rightIP`对于相同的IP地址将返回false!它应该是`return LeftIP.Equals(rightIP);`
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有