How to check if an IP address is from a particular network/netmask in Java?

后端 未结 7 2184
北恋
北恋 2020-11-29 23:33

I need to determine if given IP address is from some special network in order to authenticate automatically.

7条回答
  •  情歌与酒
    2020-11-29 23:53

    The open-source IPAddress Java library will do this in a polymorphic manner for both IPv4 and IPv6 and handles subnets. Disclaimer: I am the project manager of that library.

    Example code:

    contains("10.10.20.0/30", "10.10.20.3");
    contains("10.10.20.0/30", "10.10.20.5");
    contains("1::/64", "1::1");
    contains("1::/64", "2::1");
    contains("1::3-4:5-6", "1::4:5");       
    contains("1-2::/64", "2::");
    contains("bla", "foo");
    
    static void contains(String network, String address) {
        IPAddressString one = new IPAddressString(network);
        IPAddressString two = new IPAddressString(address);
        System.out.println(one +  " contains " + two + " " + one.contains(two));
    }
    

    Output:

    10.10.20.0/30 contains 10.10.20.3 true
    10.10.20.0/30 contains 10.10.20.5 false
    1::/64 contains 1::1 true
    1::/64 contains 2::1 false
    1::3-4:5-6 contains 1::4:5 true
    1-2::/64 contains 2:: true
    bla contains foo false
    

提交回复
热议问题