检查IPv4地址是否在私有范围内

ste*_*bot 6 java networking

在Python中,使用IPy模块可以执行以下操作:

 >>> ip.iptype()
'PRIVATE'
Run Code Online (Sandbox Code Playgroud)

有没有一个库或简单的方法在Java中做同等的工作?

Ale*_*exR 11

似乎不完全但InetAddress有一些isXX()方法,如:isAnyLocalAddress()isSiteLocalAddress()


DwB*_*DwB 5

我相信 Inet4Address.isSiteLocalAddress() 是你想要的方法。下面是一个例子:

public final class IPFreely
{
    public static void main(String[] args)
    {
        byte[] rawAddress1 =
        { 10, 0, 0, 0 };
        byte[] rawAddress2 =
        { 10, 0, 32, 0 };
        byte[] rawAddress3 =
        { (byte) 172, 16, 0, 0 };
        byte[] rawAddress4 =
        { (byte) 192, (byte) 168, 0, 0 };

        testIpAddress(rawAddress1);
        testIpAddress(rawAddress2);
        testIpAddress(rawAddress3);
        testIpAddress(rawAddress4);
    }

    public static void testIpAddress(byte[] testAddress)
    {
        Inet4Address inet4Address;

        try
        {
            inet4Address = (Inet4Address) InetAddress.getByAddress(testAddress);

            System.out.print("inet4Address.isSiteLocalAddress(): ");
            System.out.println(inet4Address.isSiteLocalAddress());
        }
        catch (UnknownHostException exception)
        {
            System.out.println("UnknownHostException");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)