社区
C语言
帖子详情
ip匹配问题
add_oil
2012-04-16 09:33:19
如果有一个ip库 里面是由 beginip endip 组成的ip段 已知有一个ip 192.168.198.10 怎样匹配从这个ip属于哪个段?
...全文
233
20
打赏
收藏
ip匹配问题
如果有一个ip库 里面是由 beginip endip 组成的ip段 已知有一个ip 192.168.198.10 怎样匹配从这个ip属于哪个段?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nice_cxf
2012-04-17
打赏
举报
回复
哦,还要网络字节序为本机字节序,
l1= ntohl(inet_addr("10.0.0.1"));
以下都要这样就可以了
add_oil
2012-04-17
打赏
举报
回复
[Quote=引用 18 楼 的回复:]
192.168.0.0不是一个有效的地址,最后一个应该是1,同样类似192.168.0.255也是不行的,如果你的数据库里这种数据太多要做对应的修改
[/Quote]
l1= inet_addr("10.0.0.1");
l2 = inet_addr("10.0.1.1");
l3 = inet_addr("10.0.0.224");
的话是一样的啊 输出的结果l3 怎样判断是不是在l1 到l2的范围?
nice_cxf
2012-04-17
打赏
举报
回复
192.168.0.0不是一个有效的地址,最后一个应该是1,同样类似192.168.0.255也是不行的,如果你的数据库里这种数据太多要做对应的修改
add_oil
2012-04-17
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
用inet_addr都转成unsigned int,然后比较就是了,
[/Quote]
int main(int argc, char* argv[])
{
struct in_addr addr1,addr2;
unsigned long l1,l2,l3;
l1= inet_addr("192.168.0.0");
l2 = inet_addr("192.168.1.0");
l3 = inet_addr("192.168.0.222");
printf("%lu\n",l1);
printf("%lu\n",l2);
printf("%lu\n",l3);
}
不能说出问题咯 输出的 l3都不是在那个范围内??
nice_cxf
2012-04-16
打赏
举报
回复
如果你愿意,字符串比较也可以,不过要把.1等等的换成.001也就是说都必须3位,你自己选择把
evencoming
2012-04-16
打赏
举报
回复
自己写一个比较函数。。。
int ip1,ip2,ip3,ip4;
fscanf(fp,"%d.%d.%d.%d",ip1,ip2,ip3,ip4);
...
然后,如果是顺序存放的,只需要毕竟边界值。
否则, 全部取出来,放内存里面,排序之后比较。
luciferisnotsatan
2012-04-16
打赏
举报
回复
unsigned long inet_addr( const char* cp);
不转int,比字符串,更麻烦。
add_oil
2012-04-16
打赏
举报
回复
因为要把一个库是以txt文档保存的 要把所有的转为int的 很麻烦吧
add_oil
2012-04-16
打赏
举报
回复
还有没有其他方法呢
luciferisnotsatan
2012-04-16
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
引用 4 楼 的回复:
引用 2 楼 的回复:
用inet_addr都转成unsigned int,然后比较就是了,
++
举例说下 能否
[/Quote]
查下msdn不就知道了?
add_oil
2012-04-16
打赏
举报
回复
[Quote=引用 4 楼 的回复:]
引用 2 楼 的回复:
用inet_addr都转成unsigned int,然后比较就是了,
++
[/Quote]
举例说下 能否
缺媳妇的郝
2012-04-16
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
用inet_addr都转成unsigned int,然后比较就是了,
[/Quote]
++
add_oil
2012-04-16
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
是 ip段是有序的吗?
如果是,直接换成 unsigned int,看是不是哪个范围内。
[/Quote]
能否举例说明下
nice_cxf
2012-04-16
打赏
举报
回复
用inet_addr都转成unsigned int,然后比较就是了,
evencoming
2012-04-16
打赏
举报
回复
是 ip段是有序的吗?
如果是,直接换成 unsigned int,看是不是哪个范围内。
add_oil
2012-04-16
打赏
举报
回复
[Quote=引用 15 楼 的回复:]
引用 14 楼 的回复:
引用 13 楼 的回复:
引用 12 楼 的回复:
如果全部用int 比较的话 太麻烦了 准备用 ip+mask 方法 mask 是数量? 这样ok不
这样你不还是要转int?奇怪了转换只是用个系统函数而已,就这你就嫌麻烦?
对了 我转为int 是用A*256*256*256+B*256*256+C*256+D 这个哦 你说的系统函数是哪个?
……
[/Quote]
ok
nice_cxf
2012-04-16
打赏
举报
回复
[Quote=引用 14 楼 的回复:]
引用 13 楼 的回复:
引用 12 楼 的回复:
如果全部用int 比较的话 太麻烦了 准备用 ip+mask 方法 mask 是数量? 这样ok不
这样你不还是要转int?奇怪了转换只是用个系统函数而已,就这你就嫌麻烦?
对了 我转为int 是用A*256*256*256+B*256*256+C*256+D 这个哦 你说的系统函数是哪个?
[/Quote]
不仔细看回帖的么?2楼就给你了
add_oil
2012-04-16
打赏
举报
回复
[Quote=引用 13 楼 的回复:]
引用 12 楼 的回复:
如果全部用int 比较的话 太麻烦了 准备用 ip+mask 方法 mask 是数量? 这样ok不
这样你不还是要转int?奇怪了转换只是用个系统函数而已,就这你就嫌麻烦?
[/Quote]
对了 我转为int 是用A*256*256*256+B*256*256+C*256+D 这个哦 你说的系统函数是哪个?
nice_cxf
2012-04-16
打赏
举报
回复
[Quote=引用 12 楼 的回复:]
如果全部用int 比较的话 太麻烦了 准备用 ip+mask 方法 mask 是数量? 这样ok不
[/Quote]
这样你不还是要转int?奇怪了转换只是用个系统函数而已,就这你就嫌麻烦?
add_oil
2012-04-16
打赏
举报
回复
如果全部用int 比较的话 太麻烦了 准备用 ip+mask 方法 mask 是数量? 这样ok不
Java实现
IP
动态
匹配
Java实现
IP
动态
匹配
最近接触了个新的数据结构: Trie 树/ 前缀树/ 字典树 等,都是指的一个意思。想了想,刚好能用来做
IP
地址的动态
匹配
,那就实践一下,学以致用。 文章目录Java实现
IP
动态
匹配
需求描述分析设计普通思路分析前缀树思路分析代码实现测试用例小结 需求描述 有些时候处于安全考虑,我们需要在系统访问路径或者功能操作上面增加一些权限管控。其中一个比较简单的方案就是
IP
管控,能不能实现一个简单的动态
IP
管控呢? 这里只简单的考虑两种用例 全字段
匹配
,192.168.10.1 模糊字段
匹配
java
ip
段
匹配
_
IP
段
匹配
[java]代码库public class
Ip
Util {/*验证
IP
是否属于某个
IP
段**
ip
Section
IP
段(以'-'分隔)*
ip
所验证的
IP
号码**/public static boolean
ip
ExistsInRange(String
ip
,String
ip
Section) {
ip
Section =
ip
Section.trim();
ip
= i...
正则表达式之
ip
地址
匹配
(详细讲解)
从语法上看,完全正确,也达到了我们的题目要求,可是我们有没有注意到,我们日常生活中所用的
ip
地址每一位都是在0-255之间,但是我们上面写的表达式会
匹配
0-999之间的所有
ip
地址,如果在未来的工作中,有这样的需求,要
匹配
所有合法的
ip
地址,那么我们上面所写的正则表达式是不是就不符合要求了,这里就需要我们使用子表达式的嵌套(表达式为:((1\d{2}.)|(2[0-5]{2}.)|(\d{1,2}.)){3}((\d{1,2})|(1\d{2})|(2[0-5]{2}))),伙伴们可以一起实践一下!
使用Python进行
IP
地址
匹配
通过使用正则表达式,我们可以方便地检查一个字符串是否是有效的
IP
地址。如上所示,我们成功地使用Python正则表达式进行了
IP
地址的
匹配
。这个方法可以帮助我们验证一个字符串是否符合
IP
地址的格式要求,并且可以进一步进行其他的处理和操作。
IP
地址的格式为"X.X.X.X",其中X是一个0到255之间的数字。我们将使用正则表达式来
匹配
这种格式的
IP
地址。如果
匹配
成功,我们进一步检查每个数字的取值范围,确保它们都在0到255之间。函数,该函数接受一个
IP
地址作为参数,并使用正则表达式来验证该
IP
地址是否有效。
正则表达式
匹配
IP
地址
1.
IP
段都表示一个字节,即只能在 0~255之间。 所以一个正确的
IP
应该是:(0~255).(0~255).(0~255).(0~255) 通过观察可以发现可以将整个
IP
分为两部分
匹配
,即:(0~255)和.(0~255) 3次 2. 0~255可以分两部分
匹配
0~199 和 200~255 a) 0~199 正则表达式为 [0-1]?\d{1,2} [0-1]? 表示
匹配
0或1一次或零次 \d 表示
匹配
任意一个十进制数字,即 0~...
C语言
70,020
社区成员
243,264
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章