java – 以String格式递增IP地址
发布时间:2020-05-24 17:49:52 所属栏目:Java 来源:互联网
导读:我是 java的新手,我正试图找到一种通过用户输入IP地址范围递增的方法. 例如,从192.168.0.1到192.168.0.255.然而,我的应用程序目前的工作方式是将from和to ip地址作为String. 有没有办法可以增加用户输入和输入的所有IP地址? 希望这是有道理的,请不要激怒我,
|
我是 java的新手,我正试图找到一种通过用户输入IP地址范围递增的方法. 例如,从192.168.0.1到192.168.0.255.然而,我的应用程序目前的工作方式是将from和to ip地址作为String. 有没有办法可以增加用户输入和输入的所有IP地址? 希望这是有道理的,请不要激怒我,我已经找到了答案! 编辑! 它实际上是ping通过地址范围所以,这里是一个小代码到目前为止,’host’是从另一个类传入的,我想循环遍历地址: public static String stringPing(String stringPing,String host){
String ipAddress;
ipAddress = host;
try
{
InetAddress inet = InetAddress.getByName(ipAddress);
boolean status = inet.isReachable(2000);
if (status)
{
stringPing = "n" +host +" is reachable";
return stringPing;
}
else
{
stringPing = "n" +host +" is unreachable";
return stringPing;
}
}
catch (UnknownHostException e)
{
System.err.println("Host does not exists");
}
catch (IOException e)
{
System.err.println("Error in reaching the Host");
}
return stringPing;
}
解决方法保持地址应该是 – 作为32位整数,并以此形式递增.仅在需要时将其从或转换为String.示例如下.我的IPAddress类完整且功能齐全.class IPAddress {
private final int value;
public IPAddress(int value) {
this.value = value;
}
public IPAddress(String stringValue) {
String[] parts = stringValue.split(".");
if( parts.length != 4 ) {
throw new IllegalArgumentException();
}
value =
(Integer.parseInt(parts[0],10) << (8*3)) & 0xFF000000 |
(Integer.parseInt(parts[1],10) << (8*2)) & 0x00FF0000 |
(Integer.parseInt(parts[2],10) << (8*1)) & 0x0000FF00 |
(Integer.parseInt(parts[3],10) << (8*0)) & 0x000000FF;
}
public int getOctet(int i) {
if( i<0 || i>=4 ) throw new IndexOutOfBoundsException();
return (value >> (i*8)) & 0x000000FF;
}
public String toString() {
StringBuilder sb = new StringBuilder();
for(int i=3; i>=0; --i) {
sb.append(getOctet(i));
if( i!= 0) sb.append(".");
}
return sb.toString();
}
@Override
public boolean equals(Object obj) {
if( obj instanceof IPAddress ) {
return value==((IPAddress)obj).value;
}
return false;
}
@Override
public int hashCode() {
return value;
}
public int getValue() {
return value;
}
public IPAddress next() {
return new IPAddress(value+1);
}
}
public class App13792784 {
/**
* @param args
*/
public static void main(String[] args) {
IPAddress ip1 = new IPAddress("192.168.0.1");
System.out.println("ip1 = " + ip1);
IPAddress ip2 = new IPAddress("192.168.0.255");
System.out.println("ip2 = " + ip2);
System.out.println("Looping:");
do {
ip1 = ip1.next();
System.out.println(ip1);
} while(!ip1.equals(ip2));
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
