程序包 tech.riemann.etp

类 Ips

java.lang.Object
tech.riemann.etp.Ips

public class Ips extends Object
作者:
Kerbores(kerbores@riemann.tech)
  • 构造器概要

    构造器
    构造器
    说明
    Ips()
     
  • 方法概要

    修饰符和类型
    方法
    说明
    static String
    getIP(jakarta.servlet.http.HttpServletRequest request)
    获取客户端IP地址 该方法首先检查HttpServletRequest对象是否为null,如果为null,则抛出IllegalArgumentException 然后,方法尝试通过一系列HTTP头信息来获取IP地址,如果这些头信息中没有合适的IP地址, 则通过HttpServletRequest对象的getRemoteAddr方法获取IP地址 最后,方法会检查获取到的IP地址是否有效,如果是IPv4或IPv6地址则直接返回,否则返回空字符串
    static String
    获取主机的IPv4地址 遍历所有网络接口,并查找IPv4地址 如果找到IPv4地址,则返回该地址;否则,返回null
    static boolean
    internalIp(byte[] addr)
    判断给定的IP地址是否为内部IP地址 内部IP地址指的是私有网络中使用的IP地址,这些IP地址不会在互联网中路由 该方法通过检查IP地址的前两个字节来判断其是否属于私有地址范围
    static boolean
    判断给定的IP地址是否为内部IP地址
    static long
    将IPv4地址转换为长整型
    static long[]
    将 IPv6 地址字符串转换为两个 long 值 此方法用于处理 IPv6 地址,将其转换为更容易处理的 long 值形式每个 IPv6 地址由 8 个 16 进制块组成, 每个块代表 16 位此方法将这些块组合成两个 long 值,每个值包含 4 个块
    static boolean
    isInRange(String ip, String cidr)
    判断一个IP地址是否在给定的CIDR地址范围内
    static String
    longs2Ipv6(long[] longs)
    将长整型数组转换为IPv6地址字符串 此方法接受一个包含两个长整型的数组,每个长整型表示IPv6地址的四组16位无符号整数 这些数字按照数组中的顺序串联起来,每组数字之间用冒号分隔,形成完整的IPv6地址
    static String
    longToIPV4(long longIp)
    将长整型IP地址转换为IPv4字符串格式
    static byte[]
    将文本格式的IPv4地址转换为数值格式的字节数组

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 构造器详细资料

    • Ips

      public Ips()
  • 方法详细资料

    • getIP

      public static String getIP(jakarta.servlet.http.HttpServletRequest request)
      获取客户端IP地址 该方法首先检查HttpServletRequest对象是否为null,如果为null,则抛出IllegalArgumentException 然后,方法尝试通过一系列HTTP头信息来获取IP地址,如果这些头信息中没有合适的IP地址, 则通过HttpServletRequest对象的getRemoteAddr方法获取IP地址 最后,方法会检查获取到的IP地址是否有效,如果是IPv4或IPv6地址则直接返回,否则返回空字符串
      参数:
      request - HttpServletRequest对象,通过它来获取IP地址
      返回:
      客户端的IP地址字符串如果获取失败或地址无效,则返回空字符串
    • internalIp

      public static boolean internalIp(String ip)
      判断给定的IP地址是否为内部IP地址
      参数:
      ip - 字符串格式的IP地址
      返回:
      如果IP地址为内部IP,则返回true;否则返回false
    • textToNumericFormatV4

      public static byte[] textToNumericFormatV4(String src)
      将文本格式的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

      public static String hostIp()
      获取主机的IPv4地址 遍历所有网络接口,并查找IPv4地址 如果找到IPv4地址,则返回该地址;否则,返回null
      返回:
      返回主机的IPv4地址字符串,如果获取失败则返回null
    • ipV4ToLong

      public static long ipV4ToLong(String ipv4)
      将IPv4地址转换为长整型
      参数:
      ipv4 - IPv4地址字符串,格式为"xxx.xxx.xxx.xxx"
      返回:
      对应的长整型数值
    • longToIPV4

      public static String longToIPV4(long longIp)
      将长整型IP地址转换为IPv4字符串格式
      参数:
      longIp - 长整型IP地址
      返回:
      转换后的IPv4字符串格式
    • ipv6ToLongs

      public static long[] ipv6ToLongs(String ipv6)
      将 IPv6 地址字符串转换为两个 long 值 此方法用于处理 IPv6 地址,将其转换为更容易处理的 long 值形式每个 IPv6 地址由 8 个 16 进制块组成, 每个块代表 16 位此方法将这些块组合成两个 long 值,每个值包含 4 个块
      参数:
      ipv6 - IPv6 地址字符串
      返回:
      包含两个 long 值的数组,这两个值表示输入的 IPv6 地址
      抛出:
      IllegalArgumentException - 如果输入字符串不是有效的 IPv6 地址或为 null
    • longs2Ipv6

      public static String longs2Ipv6(long[] longs)
      将长整型数组转换为IPv6地址字符串 此方法接受一个包含两个长整型的数组,每个长整型表示IPv6地址的四组16位无符号整数 这些数字按照数组中的顺序串联起来,每组数字之间用冒号分隔,形成完整的IPv6地址
      参数:
      longs - 包含两个元素的长整型数组,每个元素表示IPv6地址的一半
      返回:
      转换后的IPv6地址字符串
      抛出:
      IllegalArgumentException - 如果输入的数组为null或长度不为2,抛出此异常
    • isInRange

      public static boolean isInRange(String ip, String cidr)
      判断一个IP地址是否在给定的CIDR地址范围内
      参数:
      ip - 一个点分十进制格式的IP地址,例如"192.168.1.100"
      cidr - 一个CIDR地址范围,例如"192.168.1.0/24"
      返回:
      如果IP地址在CIDR范围内返回true,否则返回false