q***s 发帖数: 2243 | 1 有没有检查IP范围的算法?
比如,一个给定的IP,来快速检测其是否在规定的范围内? |
g*****g 发帖数: 34805 | 2 IP不就是0-255吗,一个简单的regex不就搞定了。
【在 q***s 的大作中提到】 : 有没有检查IP范围的算法? : 比如,一个给定的IP,来快速检测其是否在规定的范围内?
|
q***s 发帖数: 2243 | 3 问题在于是用户输入的List,包括:
1. 单个的 IP 地址,比如, 192.168.3.230, 24.56. 88.99
2. 一个范围: 比如, 92.168.0.1-92.168.0.77
3. Subnet Mask: 192.168.10.0/24
有没有这样的算法,先把这些用户的输入(在文本文件中),读入,然后“整理”一下
,再用来检测?
多谢! |
y****w 发帖数: 3747 | 4 还是像楼上说的,regex。
你允许的用户输入越复杂,你就需要越复杂的regular expression。搞明白你的规则先才是最重要的。正则表达式自己写不好的话,google一下,应该还是有不少的。
【在 q***s 的大作中提到】 : 问题在于是用户输入的List,包括: : 1. 单个的 IP 地址,比如, 192.168.3.230, 24.56. 88.99 : 2. 一个范围: 比如, 92.168.0.1-92.168.0.77 : 3. Subnet Mask: 192.168.10.0/24 : 有没有这样的算法,先把这些用户的输入(在文本文件中),读入,然后“整理”一下 : ,再用来检测? : 多谢!
|
q***s 发帖数: 2243 | 5 我的想法是对于那种 IP Range 的,是不是转换为整数来比较更快些?比如:
46.36.192.229 - 46.36.192.255,是否就可以转换为两个32位的整数,然后来比较其
他IP地址是否在这两个整数中间。(对ip的理解对否)
如果用regex来匹配,则上面的范围对应了4个cidr:
46.36.192.229/32
46.36.192.230/31
46.36.192.232/29
46.36.192.240/28
这样的话就有可能匹配4次。
再次感谢! |
M*********n 发帖数: 30 | 6 Easy. Just convert an ip address into a number. Here is how:
43.36.192.229 ->
43*256*256*256 + 36*256*256 + 192*256 + 229.
To check if a given ip is within an ip range, you just need to figure out
starting, and ending ip address of the range. Then you convert them into
numbers. You know how to compare if a given number is within a number range.
right? |
q***s 发帖数: 2243 | |
j*a 发帖数: 14423 | 8 给你1.1.1.500怎么办?
range.
【在 M*********n 的大作中提到】 : Easy. Just convert an ip address into a number. Here is how: : 43.36.192.229 -> : 43*256*256*256 + 36*256*256 + 192*256 + 229. : To check if a given ip is within an ip range, you just need to figure out : starting, and ending ip address of the range. Then you convert them into : numbers. You know how to compare if a given number is within a number range. : right?
|
|
m****r 发帖数: 6639 | 9 你敢给吗?
【在 j*a 的大作中提到】 : 给你1.1.1.500怎么办? : : range.
|
M*********n 发帖数: 30 | 10 Yours is not a valid ip address. A valid ip address is made up of 4 parts,
where each part can be any number between 0 and 255. 500 is not between 0
and 255.
【在 j*a 的大作中提到】 : 给你1.1.1.500怎么办? : : range.
|
N***m 发帖数: 4460 | 11 lol,你原来说得根本就不对,楼上给你指出来而已。
,
【在 M*********n 的大作中提到】 : Yours is not a valid ip address. A valid ip address is made up of 4 parts, : where each part can be any number between 0 and 255. 500 is not between 0 : and 255.
|
j*a 发帖数: 14423 | 12 明白人哪……
【在 N***m 的大作中提到】 : lol,你原来说得根本就不对,楼上给你指出来而已。 : : ,
|
M*********n 发帖数: 30 | 13 Can you explain why mine is incorrect?
【在 N***m 的大作中提到】 : lol,你原来说得根本就不对,楼上给你指出来而已。 : : ,
|
c******n 发帖数: 4965 | 14 just binary search,
this is similar to one problem in our algo class
【在 q***s 的大作中提到】 : 有没有检查IP范围的算法? : 比如,一个给定的IP,来快速检测其是否在规定的范围内?
|