java判断是内网ip还是公网ip

public static boolean internalIp(String ip) {

    byte[] addr = IPAddressUtil.textToNumericFormatV4(ip);

    return internalIp(addr);

}  

 public static boolean internalIp(byte[] addr) {

    final byte b0 = addr[0];

    final byte b1 = addr[1];

    //10.x.x.x/8

    final byte SECTION_1 = 0x0A;

    //172.16.x.x/12

    final byte SECTION_2 = (byte) 0xAC;

    final byte SECTION_3 = (byte) 0x10;

    final byte SECTION_4 = (byte) 0x1F;

    //192.168.x.x/16

    final byte SECTION_5 = (byte) 0xC0;

    final byte SECTION_6 = (byte) 0xA8;

    switch (b0) {

        case SECTION_1:

            return true;

        case SECTION_2:

            if (b1 >= SECTION_3 && b1 <= SECTION_4) {

                return true;

            }

        case SECTION_5:

            switch (b1) {

                case SECTION_6:

                    return true;

            }

        default:

            return false;

    }

猜你喜欢

转载自kavy.iteye.com/blog/2241797