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
有没有这样的算法,先把这些用户的输入(在文本文件中),读入,然后“整理”一下
,再用来检测?
多谢!
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
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
: 有没有这样的算法,先把这些用户的输入(在文本文件中),读入,然后“整理”一下
: ,再用来检测?
: 多谢!
你允许的用户输入越复杂,你就需要越复杂的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
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次。
再次感谢!
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
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?
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
7 楼
thanks a lot!
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?
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?
相关阅读
库里有一个函数名也叫Timeint --> String?change JSlider thumb icon?[转载] 请问自动生成测试用数据的软件Re: wrong!!! Re: 有没有 replaceall for Strieclipse-jdt and eclipse-sdk??同学们,could anyone help me to test?JB JAVA Bean,SERVLET位置一问快被java整疯了 求助呀GURU NEEDED: eDirectory and CA-ACF2how to find out free disk spaceSuggestion Re: 发现 synchronized 的一个问题java dumb question发现 synchronized 的一个问题how to set up multiple delimiter?how do you debug java applet?how to add my own class into a jar file?how to access the overrided fields of the parent?在一个函数里把arraylist设为null 但是有问题