如何从java中的给定ip获取下一个ip地址?

Raj*_*jan 4 java ip-address ipv4 inetaddress

伙计们,

我正在寻找一个Java代码片段,它提供给定IP的下一个地址.

所以getNextIPV4Address("10.1.1.1")回归"10.1.1.2".

字符串运算可以完成,但最终可能会变得混乱.这样做是否有一种很正式的方式.

谢谢你的时间.

aio*_*obe 6

我正在寻找一个Java代码片段,它提供给定IP的下一个地址.

这是给你的片段:

public static String getNextIPV4Address(String ip) {
    String[] nums = ip.split("\\.");
    int i = (Integer.parseInt(nums[0]) << 24 | Integer.parseInt(nums[2]) << 8
          |  Integer.parseInt(nums[1]) << 16 | Integer.parseInt(nums[3])) + 1;

    // If you wish to skip over .255 addresses.
    if ((byte) i == -1) i++;

    return String.format("%d.%d.%d.%d", i >>> 24 & 0xFF, i >> 16 & 0xFF,
                                        i >>   8 & 0xFF, i >>  0 & 0xFF);
}
Run Code Online (Sandbox Code Playgroud)

示例输入/输出(ideone.com演示):

10.1.1.0        -> 10.1.1.1
10.255.255.255  -> 11.0.0.0
10.0.255.254    -> 10.1.0.0
Run Code Online (Sandbox Code Playgroud)