C#-确定IP地址范围是否包含特定地址

C#-确定IP地址范围是否包含特定地址,c#,string,ip-address,range,contains,C#,String,Ip Address,Range,Contains,在C#中,假设您的IP地址范围表示为字符串值: “192.168.1.1-192.168.2.30” 您还可以使用字符串值表示单个IP地址,如: “192.168.1.150” 确定地址范围是否包含单个IP地址的最优雅的方法是什么?将IP强制转换为32位整数(IP为4字节,因此也可以表示为整数)。 而检查范围只是检查给定的IP(int)是否在两个其他IP(2个其他int)之间 if(low_range我刚刚编写了一个小库来检查指定的IP地址是否包含在预定义的范围内 var set = IpSet

在C#中,假设您的IP地址范围表示为字符串值:

“192.168.1.1-192.168.2.30”

您还可以使用字符串值表示单个IP地址,如:

“192.168.1.150”


确定地址范围是否包含单个IP地址的最优雅的方法是什么?

将IP强制转换为32位整数(IP为4字节,因此也可以表示为整数)。 而检查范围只是检查给定的IP(int)是否在两个其他IP(2个其他int)之间


if(low_range我刚刚编写了一个小库来检查指定的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地址转换为整数并进行比较。

这是一个很好的主意。对于懒惰的人,(grin)这里有一个SO答案可以帮助他们做到这一点:
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