社区
C语言
帖子详情
ip匹配问题
add_oil
2012-04-16 09:33:19
如果有一个ip库 里面是由 beginip endip 组成的ip段 已知有一个ip 192.168.198.10 怎样匹配从这个ip属于哪个段?
...全文
227
20
打赏
收藏
ip匹配问题
如果有一个ip库 里面是由 beginip endip 组成的ip段 已知有一个ip 192.168.198.10 怎样匹配从这个ip属于哪个段?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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不
windows网络编程之tcp/
ip
适用人群 windows网络编程的初学者 课程概述 课程简介: 这部教程是windows网络编程课程的第一部分课程:tcp/
ip
协议 后续会有第二部分课程:udp/
ip
协议以及第三部分课程http协议的课程发布。希望能够帮助到大家。 ...
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...
lua高性能
IP
匹配
库
ip
matcher
ip
matcher是由api7组织出品的一款高性能
IP
匹配
库,同时支持
IP
V6及CIDR模式。我们在编写防火墙时常需要对
IP
匹配
黑白名单操作,可以使用该库快速获取到命中信息。
正则表达式之
ip
地址
匹配
(详细讲解)
从语法上看,完全正确,也达到了我们的题目要求,可是我们有没有注意到,我们日常生活中所用的
ip
地址每一位都是在0-255之间,但是我们上面写的表达式会
匹配
0-999之间的所有
ip
地址,如果在未来的工作中,有这样的需求...
正则表达式
匹配
IP
地址
通过观察可以发现可以将整个
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 表示
匹配
任意...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章