获取两个IP地址之间的IP地址列表

时间:2012-09-26 08:03:29

标签: java javascript ip ipv4

我正在编写一个从用户获取来自IP地址和到IP地址的程序,并显示它们之间的IP地址列表。例如,如果用户给出10.0.0.1和10.0.0.5,那么我将显示这两者之间的五个IP地址。我想到的当前解决方案是:

  1. 获取所有IP地址的列表,然后查找生成的IP地址列表
  2. 使用嵌套循环
  3. 我应该采用什么解决方案(或建议更好的解决方案)?对于第一个解决方案,IP地址表/列表的链接是什么?

    JavaScript或Java的解决方案是什么?

5 个答案:

答案 0 :(得分:3)

首先使用.拆分IP地址。从第一个IP地址开始,将第四个部分增加到255,然后将第一个部分加1,并将第四个部分设置为1.直到到达IP地址。

  • IP地址字节 - >位 - > INT32
  • 来自:10.0.10.10 - > 00001010 00000000 00001010 00001010 - > 167774730
  • 收件人:10.1.45.1 - > 00001010 00000001 00101101 00000001 - > 167849217
  • 从From到To开始计数,只需检查1111111100000000不需要的字节。

就是这样。

答案 1 :(得分:3)

“点”写作是针对人类的。对于计算机,它是一个4字节数。所以解析它到一个数字。然后,您将获得该范围内的所有地址,只需增加一个数字,直到达到界限并将其格式化为输出。

答案 2 :(得分:2)

我在an updated jsFiddle进行了实验,最后我找到了以下解决方案。以下代码适用于所有IP地址。您必须以十六进制提供开始和结束IP地址(因为它很容易,我没有为它编写代码)。

var startIp = 0x0A000001,
endIp = 0x0A000F05;

var  temp, list = [],str;
for(var i=startIp ; i <= endIp ; i++){
    temp = (i).toString(16);
    str ='';
    if(temp.length == 7){
        temp = "0"+temp;
    }

    for(var k=temp.length-1; k  >= 0 ; k-=2){
       str = parseInt(temp[k-1] + "" + temp[k], 16) +"." + str ;
    }
    document.write(temp + " " + str+ "<br>");
    list.push(str.substring(0, str.length-1));
}

?

答案 3 :(得分:-1)

拥有所有IP地址的列表然后查找您需要的IP地址是过度的。此外,我确信您甚至可以存储该列表而无需购买额外的硬盘驱动器。

只需使用嵌套循环并生成您正在寻找的IP地址。

答案 4 :(得分:-2)

如果您足够了解地址(来自网络或文件系统或用户输入),您可以通过减法测试地址本身并获取IP地址的数量。

这是简化的,但如果你知道地址,你就会得到它:000044-000002 = 000042