我正在编写一个从用户获取来自IP地址和到IP地址的程序,并显示它们之间的IP地址列表。例如,如果用户给出10.0.0.1和10.0.0.5,那么我将显示这两者之间的五个IP地址。我想到的当前解决方案是:
我应该采用什么解决方案(或建议更好的解决方案)?对于第一个解决方案,IP地址表/列表的链接是什么?
JavaScript或Java的解决方案是什么?
答案 0 :(得分:3)
首先使用.
拆分IP地址。从第一个IP地址开始,将第四个部分增加到255,然后将第一个部分加1,并将第四个部分设置为1.直到到达IP地址。
10.0.10.10
- > 00001010 00000000 00001010 00001010
- > 167774730
10.1.45.1
- > 00001010 00000001 00101101 00000001
- > 167849217
11111111
和00000000
不需要的字节。就是这样。
答案 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
。