[英]C# - Determine if an IP address range contains a particular address
在C#中,假设您有一个表示为字符串值的IP地址范围:
“192.168.1.1-192.168.2.30”
并且您还有一个表示为字符串值的IP地址,如:
“192.168.1.150”
确定地址范围是否包含单个IP地址的最优雅方法是什么?
将IP转换为32位整数(IP为4个字节,因此它也可以表示为整数)。 检查范围只是检查给定的IP(int)是否在两个其他IP(另外两个int)之间。
if( low_range <= checked_ip <= high_range ){ TRUE! }
我刚写了一个小库IpSet来检查指定的IP地址是否包含在预定义的范围内。
var set = IpSet.ParseOrDefault("192.168.0.*,10.10.1.0/24,192.168.1.1-192.168.2.30");
var result = set.Contains("192.168.1.150"); // true
支持IPv4和IPv6。 支持CIDR表示法。 基础工作是将IP地址转换为整数并进行比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.