change code

This commit is contained in:
looly 2021-12-12 09:41:34 +08:00
parent 6c120dd568
commit f7db6c75d5
2 changed files with 60 additions and 33 deletions

View File

@ -22,6 +22,8 @@ import java.util.regex.Matcher;
*/ */
public class Ipv4Util { public class Ipv4Util {
public static final String LOCAL_IP = "127.0.0.1";
/** /**
* IP段的分割符 * IP段的分割符
*/ */
@ -305,6 +307,36 @@ public class Ipv4Util {
return MaskBit.get(maskBit) != null; return MaskBit.get(maskBit) != null;
} }
/**
* 判定是否为内网IPv4<br>
* 私有IP
* <pre>
* A类 10.0.0.0-10.255.255.255
* B类 172.16.0.0-172.31.255.255
* C类 192.168.0.0-192.168.255.255
* </pre>
* 当然还有127这个网段是环回地址
*
* @param ipAddress IP地址
* @return 是否为内网IP
* @since 5.7.18
*/
public static boolean isInnerIP(String ipAddress) {
boolean isInnerIp;
long ipNum = ipv4ToLong(ipAddress);
long aBegin = ipv4ToLong("10.0.0.0");
long aEnd = ipv4ToLong("10.255.255.255");
long bBegin = ipv4ToLong("172.16.0.0");
long bEnd = ipv4ToLong("172.31.255.255");
long cBegin = ipv4ToLong("192.168.0.0");
long cEnd = ipv4ToLong("192.168.255.255");
isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || LOCAL_IP.equals(ipAddress);
return isInnerIp;
}
//-------------------------------------------------------------------------------- Private method start //-------------------------------------------------------------------------------- Private method start
@ -334,5 +366,17 @@ public class Ipv4Util {
} }
return addr; return addr;
} }
/**
* 指定IP的long是否在指定范围内
*
* @param userIp 用户IP
* @param begin 开始IP
* @param end 结束IP
* @return 是否在范围内
*/
private static boolean isInner(long userIp, long begin, long end) {
return (userIp >= begin) && (userIp <= end);
}
//-------------------------------------------------------------------------------- Private method end //-------------------------------------------------------------------------------- Private method end
} }

View File

@ -48,7 +48,7 @@ import java.util.TreeSet;
*/ */
public class NetUtil { public class NetUtil {
public final static String LOCAL_IP = "127.0.0.1"; public final static String LOCAL_IP = Ipv4Util.LOCAL_IP;
public static String localhostName; public static String localhostName;
@ -230,27 +230,21 @@ public class NetUtil {
} }
/** /**
* 判定是否为内网IP<br> * 判定是否为内网IPv4<br>
* 私有IPA类 10.0.0.0-10.255.255.255 B类 172.16.0.0-172.31.255.255 C类 192.168.0.0-192.168.255.255 当然还有127这个网段是环回地址 * 私有IP
* <pre>
* A类 10.0.0.0-10.255.255.255
* B类 172.16.0.0-172.31.255.255
* C类 192.168.0.0-192.168.255.255
* </pre>
* 当然还有127这个网段是环回地址
* *
* @param ipAddress IP地址 * @param ipAddress IP地址
* @return 是否为内网IP * @return 是否为内网IP
* @see Ipv4Util#isInnerIP(String)
*/ */
public static boolean isInnerIP(String ipAddress) { public static boolean isInnerIP(String ipAddress) {
boolean isInnerIp; return Ipv4Util.isInnerIP(ipAddress);
long ipNum = NetUtil.ipv4ToLong(ipAddress);
long aBegin = NetUtil.ipv4ToLong("10.0.0.0");
long aEnd = NetUtil.ipv4ToLong("10.255.255.255");
long bBegin = NetUtil.ipv4ToLong("172.16.0.0");
long bEnd = NetUtil.ipv4ToLong("172.31.255.255");
long cBegin = NetUtil.ipv4ToLong("192.168.0.0");
long cEnd = NetUtil.ipv4ToLong("192.168.255.255");
isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || LOCAL_IP.equals(ipAddress);
return isInnerIp;
} }
/** /**
@ -839,8 +833,8 @@ public class NetUtil {
* *
* @param hostName 主机域名 * @param hostName 主机域名
* @param attrNames 属性 * @param attrNames 属性
* @since 5.7.7
* @return DNS信息 * @return DNS信息
* @since 5.7.7
*/ */
public static List<String> getDnsInfo(String hostName, String... attrNames) { public static List<String> getDnsInfo(String hostName, String... attrNames) {
final String uri = StrUtil.addPrefixIfNot(hostName, "dns:"); final String uri = StrUtil.addPrefixIfNot(hostName, "dns:");
@ -859,16 +853,5 @@ public class NetUtil {
// ----------------------------------------------------------------------------------------- Private method start // ----------------------------------------------------------------------------------------- Private method start
/**
* 指定IP的long是否在指定范围内
*
* @param userIp 用户IP
* @param begin 开始IP
* @param end 结束IP
* @return 是否在范围内
*/
private static boolean isInner(long userIp, long begin, long end) {
return (userIp >= begin) && (userIp <= end);
}
// ----------------------------------------------------------------------------------------- Private method end // ----------------------------------------------------------------------------------------- Private method end
} }