当前位置:  开发笔记 > IOS > 正文

如何在IP地址范围内循环?

如何解决《如何在IP地址范围内循环?》经验,为你挑选了1个好方法。

我想在IP地址范围内执行一组网络任务.一旦范围变得比c类网络大,我就无法枚举该范围内的所有主机.我希望能够使用网络掩码迭代网络的所有主机255.255.240.0.

From: 192.168.0.100
To:   192.168.10.100

怎么会接近这个?这一定是一项非常普遍的任务.我来自Cocoa iPhone编程的绿色领域,所以我们将欣赏C时尚的解决方案.:-)



1> nik..:

这是一段代码,它将快速向您介绍解释IP地址和迭代它所涉及的细微差别.

一旦开始将IP地址视为32位无符号整数,事情变得非常简单.

#include 
int
main (int argc, char *argv[])
{
    unsigned int iterator;
    int ipStart[]={192,168,0,100};
    int ipEnd[] = {192,168,10,100};

    unsigned int startIP= (
        ipStart[0] << 24 |
        ipStart[1] << 16 |
        ipStart[2] << 8 |
        ipStart[3]);
    unsigned int endIP= (
        ipEnd[0] << 24 |
        ipEnd[1] << 16 |
        ipEnd[2] << 8 |
        ipEnd[3]);

    for (iterator=startIP; iterator < endIP; iterator++)
    {
        printf (" %d.%d.%d.%d\n",
            (iterator & 0xFF000000)>>24,
            (iterator & 0x00FF0000)>>16,
            (iterator & 0x0000FF00)>>8,
            (iterator & 0x000000FF)
        );
    }

    return 0;
}

只检查没有任何元素ipStartipEnd大于255.
这将不是一个IP地址,它也会搞乱代码.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有