首页
社区
课程
招聘
[求助]枚举IP段问题
发表于: 2013-10-26 21:39 4830

[求助]枚举IP段问题

2013-10-26 21:39
4830
有个比较弱智的问题,希望各位大牛能赐教下
我想用DELPHI将IP地址在1.1.1.1到2.2.2.2这个IP段的IP地址全部列出来,请问代码应该在呢么编写呢?我考虑的是将IP每位提取出来,逐个加以比较,并加1,但是突然发现好复杂了,一下子思路短路了

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 217
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
不知道前辈们是怎么做的

我一瞬间想到的是,IP地址可以看成是一个256进制表示方式的数字。。。用二进制<->八进制<->十进制那类算法套一下应该差不多

然后,我知道socket那方面的API有把IP地址和十进制数字之间互换的函数
2013-10-26 22:06
0
雪    币: 94
活跃值: (445)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢楼上的回答。我也是突然又想到用inet_addr转换为ulong类型的值,比如A,然后再A+1,再转换回IP地址就可以了,逐个循环。但是我不知道如何又把A+1转换回X.X.X.X的形式
2013-10-26 22:11
0
雪    币: 200
活跃值: (38)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
很简单,ip是一个32位整形,你直接搞个union

union ip
{
    uint32_t ip;
    uint8_t ip_dig[4];
}

直接让ip 从 0x01010101循环到0x02020202,然后取每一位就好
2013-10-26 22:13
0
雪    币: 94
活跃值: (445)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=ganboing;1234312]很简单,ip是一个32位整形,你直接搞个union

union ip
{
    uint32_t ip;
    uint8_t ip_dig[4];
}

直接让ip 从 0x01010101循环到0x02020202,然后取每一位就好[/QUOTE]

感谢ganboing

这是VC的方法,请问DELPHI的代码应该怎么实现呢?可以具体点么?本人刚入门网络编程
2013-10-26 22:22
0
游客
登录 | 注册 方可回帖
返回
//