Java判断IP地址为内网IP还是公网IP的方法
本文实例讲述了Java判断IP地址为内网IP还是公网IP的方法。分享给大家供大家参考。具体分析如下:
tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下:
10.0.0.0/8:10.0.0.0~10.255.255.255
172.16.0.0/12:172.16.0.0~172.31.255.255
192.168.0.0/16:192.168.0.0~192.168.255.255
那么,直接上代码吧:
publicstaticbooleaninternalIp(Stringip){ byte[]addr=IPAddressUtil.textToNumericFormatV4(ip); returninternalIp(addr); }
publicstaticbooleaninternalIp(byte[]addr){ finalbyteb0=addr[0]; finalbyteb1=addr[1]; //10.x.x.x/8 finalbyteSECTION_1=0x0A; //172.16.x.x/12 finalbyteSECTION_2=(byte)0xAC; finalbyteSECTION_3=(byte)0x10; finalbyteSECTION_4=(byte)0x1F; //192.168.x.x/16 finalbyteSECTION_5=(byte)0xC0; finalbyteSECTION_6=(byte)0xA8; switch(b0){ caseSECTION_1: returntrue; caseSECTION_2: if(b1>=SECTION_3&&b1<=SECTION_4){ returntrue; } caseSECTION_5: switch(b1){ caseSECTION_6: returntrue; } default: returnfalse; } }