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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# - 确定IP地址范围是否包含特定地址相关的知识,希望对你有一定的参考价值。

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

以上是关于C# - 确定IP地址范围是否包含特定地址的主要内容,如果未能解决你的问题,请参考以下文章

墨西哥的 IP 地址列表? [关闭]

IP 地址共分哪几类?怎样确定一个IP地址它是属于哪一类的?

是否有库函数来确定 IP 地址(IPv4 和 IPv6)在 C/C++ 中是否为私有/本地?

域名/IP/主机名

检查 IP 地址是不是在范围/子网内的标准/安全方法

变址寻址的ip寻址的方式