Java 获取两个IP地址之间的IP地址列表
我正在编写一个程序,从用户的IP地址和IP地址中获取,并显示它们之间的IP地址列表。例如,如果用户给出10.0.0.1和10.0.0.5,那么我将显示这两个IP地址之间的五个IP地址。我想到的当前解决方案是:Java 获取两个IP地址之间的IP地址列表,java,javascript,ip,ipv4,Java,Javascript,Ip,Ipv4,我正在编写一个程序,从用户的IP地址和IP地址中获取,并显示它们之间的IP地址列表。例如,如果用户给出10.0.0.1和10.0.0.5,那么我将显示这两个IP地址之间的五个IP地址。我想到的当前解决方案是: 要获得所有IP地址的列表,然后查找结果IP地址列表 使用嵌套循环 我应该在这两者之间采取什么解决方案(或建议更好的解决方案)?对于第一个解决方案,IP地址表/列表的链接是什么 JavaScript或Java的解决方案是什么?如果您知道足够多的地址(从网络、文件系统或用户输入),您可以使用减
JavaScript或Java的解决方案是什么?如果您知道足够多的地址(从网络、文件系统或用户输入),您可以使用减法测试地址本身,并在那里获得IP地址数
这是简化的,但是如果您知道地址,您将得到它:
000044-000002=000042
如果您知道足够多的地址(从网络或文件系统或用户输入),您可以使用减法测试地址本身,并在那里获得IP地址数
这是简化的,但是如果您知道地址,您将得到它:
000044-000002=000042
首先使用
拆分IP地址。从第一个IP地址开始,将第四部分增加到255,然后将1添加到第三部分,并将第四部分设置为1。直到您到达to IP地址
- IP地址字节->位->Int32
- 从:
->10.0.10.10
->00001000000000 000010010 00001010
167774730
- 至:
->10.1.45.1
->00001000000001 00101100000001
167849217
- 从到开始计数,只需检查不需要的字节,即
和11111111
00000000
仅此而已。首先使用
拆分IP地址。从第一个IP地址开始,将第四部分增加到255,然后将1添加到第三部分,并将第四部分设置为1。直到您到达to IP地址
- IP地址字节->位->Int32
- 从:
10.0.10.10
->00001000000000 000010010 00001010
->167774730
- 至:
10.1.45.1
->00001000000001 00101100000001
->167849217
- 从到开始计数,只需检查不需要的字节,即
11111111
和00000000
就这些。点——书写是为人类准备的。对于计算机,它是一个4字节的数字。所以把它解析成一个数字。然后,您只需增加一个数字,直到达到边界,就可以获得该范围内的所有地址,并将其重新格式化以供输出。点-书写是为人类编写的。对于计算机,它是一个4字节的数字。所以把它解析成一个数字。然后,您只需增加一个数字,直到达到边界,然后将其重新格式化以供输出,就可以得到该范围内的所有地址。我正在进行试验,最后得出了下面的解决方案。以下代码适用于所有IP地址。您必须提供一个十六进制的起始和结束IP地址(因为它很容易,我没有为它编写代码)
var startIp=0x0A000001,
endIp=0x0A000F05;
变量temp,list=[],str;
对于(var i=startIp;i=0;k-=2){
str=parseInt(temp[k-1]+“”+temp[k],16)+“+str;
}
写(temp+“”+str+“
”);
list.push(str.substring(0,str.length-1));
}
?
我在进行试验,最后得出了下面的解决方案。以下代码适用于所有IP地址。您必须提供一个十六进制的起始和结束IP地址(因为它很容易,我没有为它编写代码)
var startIp=0x0A000001,
endIp=0x0A000F05;
变量temp,list=[],str;
对于(var i=startIp;i=0;k-=2){
str=parseInt(temp[k-1]+“”+temp[k],16)+“+str;
}
写(temp+“”+str+“
”);
list.push(str.substring(0,str.length-1));
}
?
您为什么想要这个?是用于子网扫描吗?是的,我正在扫描子网。为此,我有一个脚本,告诉从和到IP,现在我想把所有这些IP保存在单独的行中。如果在浏览器中运行,它可以用来扫描客户端的内部网络?也可以有一些外部网络。为什么要这样做?是用于子网扫描吗?是的,我正在扫描子网。为此,我有一个脚本,它告诉从和到IP,现在我想将所有这些IP保存在单独的行中。如果要在浏览器中运行,它可以用来扫描客户端内部网络?也可能有一些外部网络。您需要列举一些有关目标网络的信息,但这在网络掩码中有描述。您需要列举一些有关目标网络的信息,但在网络掩码中有描述。否。0表示网络的“名称”。顺便说一下,255是用于广播的,所以它也不可用。但这不是op问题的一部分。他想要的是地址,而不是“可用”地址。网络名称是否为.0取决于子网掩码。如果掩码是255.255.0.0,那么网络的名称是x.y.0.0,但x.y.2.0只是一个普通地址。是的,阿米尔,拆分是一个解决方案,但我想知道有一个有序IP地址列表,然后通过索引或查询之间的DB来获取IP列表。考虑一个排序的IPS列表,如100.0.0.-0.0.0.1-0.0.0.2-2-0.0.0.3等,因此查询之间将是EasySO,您应该使用IP地址的32位值。每个IP有4个字节,所以通过放置它们的比特,我们可以创建一个32位巫师是可索引的和可查询的。我希望避免嵌套循环和多个if-else语句。谢谢。0表示网络的“名称”。顺便说一下,255是广播用的,所以这不是u
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));
}
?