Java实现ip地址计算

通过IP/掩码位获取最后可用地址,并判断是否能ping通。

在Java中,可以使用InetAddressSubnetUtils类来实现这个功能。首先,需要导入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());
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值