如何使用java库减少IPV4地址?

时间:2018-06-09 10:36:35

标签: java java-8 ipv4

我正在将nodejs代码转换为Java8。

在节点中有如下所示的代码

  var ipToEndAt = ippp.prev("192.168.1.225"); 

ipToEndAt的结果为"192.168.1.224"

我需要将此行转换为java代码。我搜索了SubnetUtils库,但找不到合适的东西。

类似我还需要将ip地址增加1

任何人都可以推荐图书馆或代码段吗?这将是最好的

2 个答案:

答案 0 :(得分:5)

虽然自己做起来并不太难,但是Guava中的InetAddresses课程允许这种操作。无论如何,Guava对您的工具箱来说是一个非常有用的补充。

InetAddress address = InetAddress.getByName("192.168.1.225");
address = InetAddresses.decrement(address);

看,它看起来几乎与JS代码相同。

在你的评论中,你声明你无法使用减量方法,这表明你有一个非常古老的番石榴版本。

https://github.com/google/guava/commit/d39130651d8a90f5ebe066de7f0b2311806e5152#diff-1207ec0a4b5d3f5e5c2236b7373eefc9

The project home page包含有关如何将当前版本(25.1)添加到项目依赖项的说明。

答案 1 :(得分:0)

这可以通过IPAddress Java library完成,其方式在IPv4和IPv6之间是多态的。另外,它不限于像Guava那样递增或递减1,您可以使用任何long值并在溢出的情况下捕获AddressValueException。免责声明:我是IPAddress的项目经理。

示例代码:

IPAddress result = increment("192.168.1.225", -1);
System.out.println(result);

result = increment("::", 1);
System.out.println(result);

static IPAddress increment(String addrStr, long inc) throws AddressValueException {
    return new IPAddressString(addrStr).getAddress().increment(inc);
}

输出:

192.168.1.224
::1

更详尽的sample code at the IPAddress wiki