[英]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.