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

7
在C#中,假设您有一个表示为字符串值的IP地址范围:
"192.168.1.1-192.168.2.30"
同时您也有一个表示为字符串值的单个IP地址:
"192.168.1.150"
那么,最优雅的方法是什么来确定地址范围是否包含单个IP地址?

这个回答是否回答了你的问题?如何检查输入的 IP 是否在特定的 IP 范围内 - Michael Freidgeim
2个回答

14

将IP地址转换为32位整数(IP地址由4个字节组成,因此也可以表示为整数)。 然后检查范围只需要检查给定的IP地址(整数)是否位于另外两个IP地址(整数)之间。

if( low_range <= checked_ip <= high_range ){ TRUE! }

好主意。对于懒人来说,(咧嘴笑)这里有一个SO答案,应该可以帮助解决问题:https://dev59.com/7XRB5IYBdhLWcg3w77kn - Dan Esparza

4

我刚刚写了一个小库IpSet,它可以检查指定的IP地址是否包含在预定义的范围内,与IT技术有关。

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地址转换为整数并进行比较。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接