-2
由於在java中很新,有人可以幫助我檢查COMMAND LINE提供給定範圍內的所有IP。因爲現在這個代碼只能自動運行。 應將IP範圍指定爲起始IP,後跟一個指示範圍內有多少IP的整數。命令行中的IP範圍
比如我在cmd中的 「java iPRange 126.172.1.1 7」 運行程序
它會檢查IP的從126.172.1.1到126.172.1.7
這裏是我的代碼:
import java.util.*;
import java.net.*;
public class IPRange
{
public static void main(String[] args)
{
try
{
long start = host2long("126.172.1.1");
long end = host2long("126.172.1.7");
for (long i=start; i<=end; i++)
{
System.out.println(long2dotted(i));
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static long host2long(String host)
{
long ip=0;
if (!Character.isDigit(host.charAt(0))) return -1;
int[] addr = ip2intarray(host);
if (addr == null) return -1;
for (int i=0;i<addr.length;++i)
{
ip += ((long)(addr[i]>=0 ? addr[i] : 0)) << 8*(3-i);
}
return ip;
}
public static int[] ip2intarray(String host)
{
int[] address = {-1,-1,-1,-1};
int i=0;
StringTokenizer tokens = new StringTokenizer(host,".");
if (tokens.countTokens() > 4) return null;
while (tokens.hasMoreTokens())
{
try
{
address[i++] = Integer.parseInt(tokens.nextToken()) & 0xFF;
}
catch(NumberFormatException nfe)
{
return null;
}
}
return address;
}
public static String long2dotted(long address)
{
StringBuffer sb = new StringBuffer();
for (int i = 0, shift = 24; i < 4; i++, shift -= 8)
{
long value = (address >> shift) & 0xff;
sb.append(value);
if (i != 3)
{
sb.append('.');
}
}
return sb.toString();
}
}
輸出:
126.172.1.1
126.172.1.2
126.172.1.3
126.172.1.4
126.172.1.5
126.172.1.6
126.172.1.7
爲什麼你不粘貼你在第一次嘗試在你的問題中解決這個問題時編寫的代碼?你確實寫了一些代碼來嘗試自己,對吧? – Kon
那麼從你的最後努力是什麼? – soorapadman
需要更多規格 –