我想在IP地址范围内执行一组网络任务.一旦范围变得比c类网络大,我就无法枚举该范围内的所有主机.我希望能够使用网络掩码迭代网络的所有主机255.255.240.0
.
From: 192.168.0.100 To: 192.168.10.100
怎么会接近这个?这一定是一项非常普遍的任务.我来自Cocoa iPhone编程的绿色领域,所以我们将欣赏C时尚的解决方案.:-)
这是一段代码,它将快速向您介绍解释IP地址和迭代它所涉及的细微差别.
一旦开始将IP地址视为32位无符号整数,事情变得非常简单.
#includeint 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; }
只检查没有任何元素ipStart
和ipEnd
大于255.
这将不是一个IP地址,它也会搞乱代码.