public class Ipv4Util extends Object implements Ipv4Pool
名词解释:
MaskBit
IP_MASK_SPLIT_MARK, IP_SPLIT_MARK, IPV4_A_NUM_MAX, IPV4_A_NUM_MIN, IPV4_A_PRIVATE_NUM_MAX, IPV4_A_PRIVATE_NUM_MIN, IPV4_A_PRIVATE_STR_MAX, IPV4_A_PRIVATE_STR_MIN, IPV4_A_PUBLIC_1_NUM_MAX, IPV4_A_PUBLIC_1_NUM_MIN, IPV4_A_PUBLIC_1_STR_MAX, IPV4_A_PUBLIC_1_STR_MIN, IPV4_A_PUBLIC_2_NUM_MAX, IPV4_A_PUBLIC_2_NUM_MIN, IPV4_A_PUBLIC_2_STR_MAX, IPV4_A_PUBLIC_2_STR_MIN, IPV4_A_STR_MAX, IPV4_A_STR_MIN, IPV4_B_NUM_MAX, IPV4_B_NUM_MIN, IPV4_B_PRIVATE_NUM_MAX, IPV4_B_PRIVATE_NUM_MIN, IPV4_B_PRIVATE_STR_MAX, IPV4_B_PRIVATE_STR_MIN, IPV4_B_PUBLIC_1_NUM_MAX, IPV4_B_PUBLIC_1_NUM_MIN, IPV4_B_PUBLIC_1_STR_MAX, IPV4_B_PUBLIC_1_STR_MIN, IPV4_B_PUBLIC_2_NUM_MAX, IPV4_B_PUBLIC_2_NUM_MIN, IPV4_B_PUBLIC_2_STR_MAX, IPV4_B_PUBLIC_2_STR_MIN, IPV4_B_STR_MAX, IPV4_B_STR_MIN, IPV4_C_NUM_MAX, IPV4_C_NUM_MIN, IPV4_C_PRIVATE_NUM_MAX, IPV4_C_PRIVATE_NUM_MIN, IPV4_C_PRIVATE_STR_MAX, IPV4_C_PRIVATE_STR_MIN, IPV4_C_PUBLIC_1_NUM_MAX, IPV4_C_PUBLIC_1_NUM_MIN, IPV4_C_PUBLIC_1_STR_MAX, IPV4_C_PUBLIC_1_STR_MIN, IPV4_C_PUBLIC_2_NUM_MAX, IPV4_C_PUBLIC_2_NUM_MIN, IPV4_C_PUBLIC_2_STR_MAX, IPV4_C_PUBLIC_2_STR_MIN, IPV4_C_STR_MAX, IPV4_C_STR_MIN, IPV4_D_DEDICATED_NUM_MAX, IPV4_D_DEDICATED_NUM_MIN, IPV4_D_DEDICATED_STR_MAX, IPV4_D_DEDICATED_STR_MIN, IPV4_D_NUM_MAX, IPV4_D_NUM_MIN, IPV4_D_PRIVATE_NUM_MAX, IPV4_D_PRIVATE_NUM_MIN, IPV4_D_PRIVATE_STR_MAX, IPV4_D_PRIVATE_STR_MIN, IPV4_D_PUBLIC_NUM_MAX, IPV4_D_PUBLIC_NUM_MIN, IPV4_D_PUBLIC_STR_MAX, IPV4_D_PUBLIC_STR_MIN, IPV4_D_STR_MAX, IPV4_D_STR_MIN, IPV4_E_NUM_MAX, IPV4_E_NUM_MIN, IPV4_E_STR_MAX, IPV4_E_STR_MIN, IPV4_LOOPBACK_NUM_MAX, IPV4_LOOPBACK_NUM_MIN, IPV4_LOOPBACK_STR_MAX, IPV4_LOOPBACK_STR_MIN, IPV4_MASK_BIT_MAX, IPV4_MASK_BIT_MIN, IPV4_MASK_BIT_VALID_MIN, IPV4_MASK_MAX, IPV4_MASK_VALID_MIN, IPV4_NUM_MAX, IPV4_NUM_MIN, IPV4_STR_MAX, IPV4_STR_MIN, IPV4_UNUSED_NUM_MAX, IPV4_UNUSED_NUM_MIN, IPV4_UNUSED_STR_MAX, IPV4_UNUSED_STR_MIN, LOCAL_IP, LOCAL_IP_NUM
Constructor and Description |
---|
Ipv4Util() |
Modifier and Type | Method and Description |
---|---|
static InetSocketAddress |
buildInetSocketAddress(String host,
int defaultPort)
构建InetSocketAddress
当host中包含端口时(用“:”隔开),使用host中的端口,否则使用默认端口 给定host为空时使用本地host(127.0.0.1) |
static int |
countByIpRange(long fromIp,
long toIp)
获得 指定区间内的 ip数量
|
static int |
countByIpRange(String fromIp,
String toIp)
获得 指定区间内的 ip数量
|
static int |
countByMaskBit(int maskBit,
boolean isAll)
获取 子网内的 地址总数
|
static String |
formatIpBlock(String ip,
String mask)
根据 ip地址 和 掩码地址 获得 CIDR格式字符串
|
static long |
getBeginIpLong(String ip,
int maskBit)
根据 ip 和 掩码位 获取 子网的起始IP(Long型)
|
static String |
getBeginIpStr(String ip,
int maskBit)
根据 ip 和 掩码位 获取 子网的起始IP(字符串型)
方法别名:inet_ntoa
|
static long |
getEndIpLong(String ip,
int maskBit)
根据 ip 和 掩码位 获取 子网的终止IP(Long型)
|
static String |
getEndIpStr(String ip,
int maskBit)
根据 ip 和 掩码位 获取 子网的终止IP(字符串型)
|
static byte[] |
getLocalHardwareAddress()
获得本机物理地址
|
static InetAddress |
getLocalhost()
获取本机网卡IPv4地址,规则如下:
必须非回路(loopback)地址、非局域网地址(siteLocal)、IPv4地址
多网卡则返回第一个满足条件的地址
如果无满足要求的地址,调用
InetAddress.getLocalHost() 获取地址
此方法不会抛出异常,获取失败将返回null 见:https://github.com/dromara/hutool/issues/428 |
static InetAddress |
getLocalhostDirectly()
获取本机网卡IPv4地址,不使用缓存,规则如下:
必须非回路(loopback)地址、非局域网地址(siteLocal)、IPv4地址
多网卡则返回第一个满足条件的地址
如果无满足要求的地址,调用
InetAddress.getLocalHost() 获取地址
此方法不会抛出异常,获取失败将返回null 见:https://github.com/dromara/hutool/issues/428 |
static InetAddress |
getLocalhostDirectly(boolean includeSiteLocal)
获取本机网卡IPv4地址,不使用缓存,规则如下:
必须非回路(loopback)地址、IPv4地址
多网卡则返回第一个满足条件的地址
如果无满足要求的地址,调用
InetAddress.getLocalHost() 获取地址
此方法不会抛出异常,获取失败将返回null 见:https://github.com/dromara/hutool/issues/428 |
static String |
getLocalHostName()
获取主机名称,一次获取会缓存名称
注意此方法会触发反向DNS解析,导致阻塞,阻塞时间取决于网络! |
static String |
getLocalMacAddress()
获得本机MAC地址,默认使用获取到的IPv4本地地址对应网卡
|
static int |
getMaskBitByMask(String mask)
将 子网掩码 转换为 掩码位
|
static String |
getMaskByIpRange(String fromIp,
String toIp)
根据 开始IP 与 结束IP 获取 掩码地址
|
static String |
getMaskByMaskBit(int maskBit)
根据 掩码位 获取 掩码地址
|
static int |
getPartOfIp(long ip,
int position)
获取ip(Long类型)指定部分的十进制值,即,X.X.X.X 形式中每个部分的值
例如,ip为0xC0A802FA:
第1部分的值为:0xC0,十进制值为:192
第2部分的值为:0xA8,十进制值为:168
第3部分的值为:0x02,十进制值为:2
第4部分的值为:0xFA,十进制值为:250
|
static long |
ipv4ToLong(String strIp)
将 ip字符串 转换为 long值
方法别名:inet_aton
|
static boolean |
isInnerIP(long ipNum)
是否为内网地址
|
static boolean |
isInnerIP(String ipAddress)
判定是否为内网IPv4
私有IP: 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 当然,还有127这个网段是环回地址 |
static boolean |
isMaskBitValid(int maskBit)
判断掩码位是否合法
|
static boolean |
isMaskValid(String mask)
判断掩码是否合法
|
static boolean |
isPublicIP(long ipNum)
是否为公网地址
|
static boolean |
isPublicIP(String ipAddress)
是否为公网地址
公网IP:
A类 1.0.0.0-9.255.255.255,11.0.0.0-126.255.255.255
B类 128.0.0.0-172.15.255.255,172.32.0.0-191.255.255.255
C类 192.0.0.0-192.167.255.255,192.169.0.0-223.255.255.255
|
static List<String> |
list(long ipFrom,
long ipTo)
得到指定区间内的所有IP地址
|
static List<String> |
list(String ipRange,
boolean isAll)
智能获取指定区间内的所有IP地址
|
static List<String> |
list(String ip,
int maskBit,
boolean isAll)
根据 IP地址 和 掩码位数 获取 子网所有ip地址
|
static List<String> |
list(String ipFrom,
String ipTo)
获得 指定区间内 所有ip地址
|
static String |
longToIpv4(long ip)
根据 ip的long值 获取 ip字符串,即:xxx.xxx.xxx.xxx
|
static boolean |
matches(String wildcard,
String ipAddress)
检测指定 IP 地址是否匹配通配符 wildcard
|
public static String getLocalHostName()
public static String getLocalMacAddress()
public static byte[] getLocalHardwareAddress()
public static InetAddress getLocalhost()
InetAddress.getLocalHost()
获取地址
此方法不会抛出异常,获取失败将返回null
见:https://github.com/dromara/hutool/issues/428
null
public static InetAddress getLocalhostDirectly()
InetAddress.getLocalHost()
获取地址
此方法不会抛出异常,获取失败将返回null
见:https://github.com/dromara/hutool/issues/428
null
public static InetAddress getLocalhostDirectly(boolean includeSiteLocal)
InetAddress.getLocalHost()
获取地址
此方法不会抛出异常,获取失败将返回null
见:https://github.com/dromara/hutool/issues/428
includeSiteLocal
- 是否包含局域网地址,如10.0.0.0 ~ 10.255.255.255、172.16.0.0 ~ 172.31.255.255、192.168.0.0 ~ 192.168.255.255null
public static InetSocketAddress buildInetSocketAddress(String host, int defaultPort)
host
- HostdefaultPort
- 默认端口public static String formatIpBlock(String ip, String mask)
ip
- IP地址,点分十进制,如:xxx.xxx.xxx.xxxmask
- 掩码地址,点分十进制,如:255.255.255.0public static List<String> list(String ipRange, boolean isAll)
ipRange
- IP区间,支持 X.X.X.X-X.X.X.X 或 X.X.X.X/XisAll
- true:全量地址,false:可用地址;该参数仅在ipRange为X.X.X.X/X时才生效public static List<String> list(String ip, int maskBit, boolean isAll)
ip
- IP地址,点分十进制maskBit
- 掩码位,例如24、32isAll
- true:全量地址,false:可用地址public static List<String> list(String ipFrom, String ipTo)
ipFrom
- 开始IP,包含,点分十进制ipTo
- 结束IP,包含,点分十进制public static List<String> list(long ipFrom, long ipTo)
ipFrom
- 开始IP, 包含ipTo
- 结束IP, 包含public static String longToIpv4(long ip)
ip
- IP的long表示形式public static long ipv4ToLong(String strIp)
方法别名:inet_aton
strIp
- ip地址,点分十进制,xxx.xxx.xxx.xxxpublic static String getBeginIpStr(String ip, int maskBit)
方法别名:inet_ntoa
ip
- 给定的IP,点分十进制,如:xxx.xxx.xxx.xxxmaskBit
- 给定的掩码位,如:30public static long getBeginIpLong(String ip, int maskBit)
ip
- 给定的IP,点分十进制,如:xxx.xxx.xxx.xxxmaskBit
- 给定的掩码位,如:30public static String getEndIpStr(String ip, int maskBit)
ip
- 给定的IP,点分十进制,如:xxx.xxx.xxx.xxxmaskBit
- 给定的掩码位,如:30public static long getEndIpLong(String ip, int maskBit)
ip
- 给定的IP,点分十进制,如:xxx.xxx.xxx.xxxmaskBit
- 给定的掩码位,如:30public static int getMaskBitByMask(String mask)
mask
- 掩码的点分十进制表示,例如 255.255.255.0IllegalArgumentException
- 子网掩码非法public static int countByMaskBit(int maskBit, boolean isAll)
maskBit
- 掩码位,取值范围:(Ipv4Pool.IPV4_MASK_BIT_VALID_MIN
, Ipv4Pool.IPV4_MASK_BIT_MAX
]isAll
- true:全量地址,false:可用地址public static String getMaskByMaskBit(int maskBit)
maskBit
- 掩码位,如:24,取值范围:[Ipv4Pool.IPV4_MASK_BIT_VALID_MIN
, Ipv4Pool.IPV4_MASK_BIT_MAX
]public static String getMaskByIpRange(String fromIp, String toIp)
fromIp
- 开始IP,包含,点分十进制toIp
- 结束IP,包含,点分十进制public static int countByIpRange(String fromIp, String toIp)
fromIp
- 开始IP,包含,点分十进制toIp
- 结束IP,包含,点分十进制public static int countByIpRange(long fromIp, long toIp)
fromIp
- 开始IP,包含toIp
- 结束IP,包含public static boolean isMaskValid(String mask)
mask
- 掩码的点分十进制表示,例如 255.255.255.0public static boolean isMaskBitValid(int maskBit)
maskBit
- 掩码位,有效范围:[Ipv4Pool.IPV4_MASK_BIT_VALID_MIN
, Ipv4Pool.IPV4_MASK_BIT_MAX
]public static boolean isInnerIP(String ipAddress)
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当然,还有127这个网段是环回地址
ipAddress
- IP地址,点分十进制public static boolean isInnerIP(long ipNum)
ipNum
- IP地址数值形式isInnerIP(String)
public static boolean isPublicIP(String ipAddress)
公网IP:
A类 1.0.0.0-9.255.255.255,11.0.0.0-126.255.255.255 B类 128.0.0.0-172.15.255.255,172.32.0.0-191.255.255.255 C类 192.0.0.0-192.167.255.255,192.169.0.0-223.255.255.255
ipAddress
- IP地址,点分十进制public static boolean isPublicIP(long ipNum)
ipNum
- IP地址数值形式isPublicIP(String)
public static int getPartOfIp(long ip, int position)
例如,ip为0xC0A802FA:
ip
- ip地址,Long类型position
- 指定位置,取值范围:[1,4]Copyright © 2025. All rights reserved.