boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - 有没有检查IP范围的算法?
相关主题
怎样截取网页
中多个

之间的内容?
[转载] 请教一个猜数字的算法
编译原理,正则表示请教
正则表示请教2
A regular expression question
大家都这么处理cross site scripting?
regex急求帮助
must-have Eclipse plug-ins
regular expression for whitespace in path
JAVA里什么METHOD是用来STRING PATTERN SEARCH
相关话题的讨论汇总
话题: ip话题: 256话题: range话题: address话题: 范围
进入Java版参与讨论
1 (共1页)
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
7
thanks a lot!
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,来快速检测其是否在规定的范围内?

1 (共1页)
进入Java版参与讨论
相关主题
JAVA里什么METHOD是用来STRING PATTERN SEARCH
How to get a matched String?
java regex pattern question
Do you guys use lex to parsing input?
regex question?
Regular Expression question: how to enumerate all matches?
简单算法问题
想说动同事用java而不是c++做新项目,大家能否列举一下优点?
这个是JSP的什么技术
A Simple Java Socket Issue
相关话题的讨论汇总
话题: ip话题: 256话题: range话题: address话题: 范围