程序包 tech.riemann.etp
类 Ips
java.lang.Object
tech.riemann.etp.Ips
- 作者:
- Kerbores(kerbores@riemann.tech)
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static StringgetIP(jakarta.servlet.http.HttpServletRequest request) 获取客户端IP地址 该方法首先检查HttpServletRequest对象是否为null,如果为null,则抛出IllegalArgumentException 然后,方法尝试通过一系列HTTP头信息来获取IP地址,如果这些头信息中没有合适的IP地址, 则通过HttpServletRequest对象的getRemoteAddr方法获取IP地址 最后,方法会检查获取到的IP地址是否有效,如果是IPv4或IPv6地址则直接返回,否则返回空字符串static StringhostIp()获取主机的IPv4地址 遍历所有网络接口,并查找IPv4地址 如果找到IPv4地址,则返回该地址;否则,返回nullstatic booleaninternalIp(byte[] addr) 判断给定的IP地址是否为内部IP地址 内部IP地址指的是私有网络中使用的IP地址,这些IP地址不会在互联网中路由 该方法通过检查IP地址的前两个字节来判断其是否属于私有地址范围static booleaninternalIp(String ip) 判断给定的IP地址是否为内部IP地址static longipV4ToLong(String ipv4) 将IPv4地址转换为长整型static long[]ipv6ToLongs(String ipv6) 将 IPv6 地址字符串转换为两个 long 值 此方法用于处理 IPv6 地址,将其转换为更容易处理的 long 值形式每个 IPv6 地址由 8 个 16 进制块组成, 每个块代表 16 位此方法将这些块组合成两个 long 值,每个值包含 4 个块static boolean判断一个IP地址是否在给定的CIDR地址范围内static Stringlongs2Ipv6(long[] longs) 将长整型数组转换为IPv6地址字符串 此方法接受一个包含两个长整型的数组,每个长整型表示IPv6地址的四组16位无符号整数 这些数字按照数组中的顺序串联起来,每组数字之间用冒号分隔,形成完整的IPv6地址static StringlongToIPV4(long longIp) 将长整型IP地址转换为IPv4字符串格式static byte[]将文本格式的IPv4地址转换为数值格式的字节数组
-
构造器详细资料
-
Ips
public Ips()
-
-
方法详细资料
-
getIP
获取客户端IP地址 该方法首先检查HttpServletRequest对象是否为null,如果为null,则抛出IllegalArgumentException 然后,方法尝试通过一系列HTTP头信息来获取IP地址,如果这些头信息中没有合适的IP地址, 则通过HttpServletRequest对象的getRemoteAddr方法获取IP地址 最后,方法会检查获取到的IP地址是否有效,如果是IPv4或IPv6地址则直接返回,否则返回空字符串- 参数:
request- HttpServletRequest对象,通过它来获取IP地址- 返回:
- 客户端的IP地址字符串如果获取失败或地址无效,则返回空字符串
-
internalIp
判断给定的IP地址是否为内部IP地址- 参数:
ip- 字符串格式的IP地址- 返回:
- 如果IP地址为内部IP,则返回true;否则返回false
-
textToNumericFormatV4
将文本格式的IPv4地址转换为数值格式的字节数组- 参数:
src- 文本格式的IPv4地址字符串- 返回:
- 数值格式的IPv4地址对应的字节数组,如果转换失败或输入非法,则返回空数组
-
internalIp
public static boolean internalIp(byte[] addr) 判断给定的IP地址是否为内部IP地址 内部IP地址指的是私有网络中使用的IP地址,这些IP地址不会在互联网中路由 该方法通过检查IP地址的前两个字节来判断其是否属于私有地址范围- 参数:
addr- 一个包含IP地址的字节数组,该IP地址需要是4字节的IPv4地址- 返回:
- 如果给定的IP地址是内部IP地址,则返回true;否则返回false
-
hostIp
获取主机的IPv4地址 遍历所有网络接口,并查找IPv4地址 如果找到IPv4地址,则返回该地址;否则,返回null- 返回:
- 返回主机的IPv4地址字符串,如果获取失败则返回null
-
ipV4ToLong
将IPv4地址转换为长整型- 参数:
ipv4- IPv4地址字符串,格式为"xxx.xxx.xxx.xxx"- 返回:
- 对应的长整型数值
-
longToIPV4
将长整型IP地址转换为IPv4字符串格式- 参数:
longIp- 长整型IP地址- 返回:
- 转换后的IPv4字符串格式
-
ipv6ToLongs
将 IPv6 地址字符串转换为两个 long 值 此方法用于处理 IPv6 地址,将其转换为更容易处理的 long 值形式每个 IPv6 地址由 8 个 16 进制块组成, 每个块代表 16 位此方法将这些块组合成两个 long 值,每个值包含 4 个块- 参数:
ipv6- IPv6 地址字符串- 返回:
- 包含两个 long 值的数组,这两个值表示输入的 IPv6 地址
- 抛出:
IllegalArgumentException- 如果输入字符串不是有效的 IPv6 地址或为 null
-
longs2Ipv6
将长整型数组转换为IPv6地址字符串 此方法接受一个包含两个长整型的数组,每个长整型表示IPv6地址的四组16位无符号整数 这些数字按照数组中的顺序串联起来,每组数字之间用冒号分隔,形成完整的IPv6地址- 参数:
longs- 包含两个元素的长整型数组,每个元素表示IPv6地址的一半- 返回:
- 转换后的IPv6地址字符串
- 抛出:
IllegalArgumentException- 如果输入的数组为null或长度不为2,抛出此异常
-
isInRange
判断一个IP地址是否在给定的CIDR地址范围内- 参数:
ip- 一个点分十进制格式的IP地址,例如"192.168.1.100"cidr- 一个CIDR地址范围,例如"192.168.1.0/24"- 返回:
- 如果IP地址在CIDR范围内返回true,否则返回false
-