簡體   English   中英

C# - 確定IP地址范圍是否包含特定地址

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM