通过IP/掩码位获取最后可用地址,并判断是否能ping通。
在Java中,可以使用InetAddress和SubnetUtils类来实现这个功能。首先,需要导入SubnetUtils类,该类不是Java的标准库,可以使用 Apache Commons Net 库来处理 IP 地址和子网掩码的计算。
首先,需要将 IP 地址和子网掩码位转换为 CIDR 格式,然后找到最后一个可用地址。下面是一个示例代码:

import java.io.IOException;
import java.net.InetAddress;
import org.apache.commons.net.util.SubnetUtils;
import org.apache.commons.net.util.SubnetUtils.SubnetInfo;
public class Test {
public static void main(String[] args) {
String ipAddress = "127.0.0.1";
String maskBits = "30";
String cidrNotation = ipAddress + "/" + maskBits;
SubnetUtils utils = new SubnetUtils(cidrNotation);
SubnetInfo info = utils.getInfo();
String lastAddress = info.getHighAddress();
System.out.println("IP/掩码位:" + info.getCidrSignature());
System.out.println("可用地址:" + info.getAddressCount());
System.out.println("掩码:" + info.getNetmask());
System.out.println("网络:" + info.getNetworkAddress());
// System.out.println("IP:" + info.getAddress());
System.out.println("第一个可用:" + info.getLowAddress());
System.out.println("最后可用:" + lastAddress);
System.out.println("广播:" + info.getBroadcastAddress());
String[] allAddresses = info.getAllAddresses();
for (String string : allAddresses) {
System.out.println(string);
}
try {
InetAddress inet = InetAddress.getByName(ipAddress);
if (inet.isReachable(5000)) { // Timeout in milliseconds
System.out.println(ipAddress + " 可以ping通.");
} else {
System.out.println(ipAddress + " 无法ping通.");
}
} catch (IOException e) {
System.err.println("发生异常: " + e.getMessage());
}
}
}
1523

被折叠的 条评论
为什么被折叠?



