Redian新闻
>
有没有检查IP范围的算法?
avatar
有没有检查IP范围的算法?# Java - 爪哇娇娃
q*s
1
有没有检查IP范围的算法?
比如,一个给定的IP,来快速检测其是否在规定的范围内?
avatar
g*g
2
IP不就是0-255吗,一个简单的regex不就搞定了。

【在 q***s 的大作中提到】
: 有没有检查IP范围的算法?
: 比如,一个给定的IP,来快速检测其是否在规定的范围内?

avatar
q*s
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
有没有这样的算法,先把这些用户的输入(在文本文件中),读入,然后“整理”一下
,再用来检测?
多谢!
avatar
y*w
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
: 有没有这样的算法,先把这些用户的输入(在文本文件中),读入,然后“整理”一下
: ,再用来检测?
: 多谢!

avatar
q*s
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次。
再次感谢!
avatar
M*n
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?
avatar
q*s
7
thanks a lot!
avatar
j*a
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?

avatar
m*r
9
你敢给吗?

【在 j*a 的大作中提到】
: 给你1.1.1.500怎么办?
:
: range.

avatar
M*n
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.

avatar
N*m
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.

avatar
j*a
12
明白人哪……

【在 N***m 的大作中提到】
: lol,你原来说得根本就不对,楼上给你指出来而已。
:
: ,

avatar
M*n
13
Can you explain why mine is incorrect?

【在 N***m 的大作中提到】
: lol,你原来说得根本就不对,楼上给你指出来而已。
:
: ,

avatar
c*n
14
just binary search,
this is similar to one problem in our algo class

【在 q***s 的大作中提到】
: 有没有检查IP范围的算法?
: 比如,一个给定的IP,来快速检测其是否在规定的范围内?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。