Class NetKit

java.lang.Object
org.aoju.bus.core.toolkit.NetKit

public class NetKit extends Object
网络相关工具
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • PORT_RANGE_MIN

      public static final int PORT_RANGE_MIN
      默认最小端口,1024
      See Also:
    • PORT_RANGE_MAX

      public static final int PORT_RANGE_MAX
      默认最大端口,65535
      See Also:
  • Constructor Details

    • NetKit

      public NetKit()
  • Method Details

    • longToIpv4

      public static String longToIpv4(long longIP)
      根据long值获取ip v4地址
      Parameters:
      longIP - IP的long表示形式
      Returns:
      IP V4 地址
    • ipv4ToLong

      public static long ipv4ToLong(String strIP)
      根据ip地址计算出long型的数据
      Parameters:
      strIP - IP V4 地址
      Returns:
      long值
    • isUsableLocalPort

      public static boolean isUsableLocalPort(int port)
      检测本地端口可用性
      Parameters:
      port - 被检测的端口
      Returns:
      是否可用
    • isValidPort

      public static boolean isValidPort(int port)
      是否为有效的端口 此方法并不检查端口是否被占用
      Parameters:
      port - 端口号
      Returns:
      是否有效
    • getUsableLocalPort

      public static int getUsableLocalPort()
      查找1024~65535范围内的可用端口 此方法只检测给定范围内的随机一个端口,检测65535-1024次
      Returns:
      可用的端口
    • getUsableLocalPort

      public static int getUsableLocalPort(int minPort)
      查找指定范围内的可用端口,最大值为65535 此方法只检测给定范围内的随机一个端口,检测65535-minPort次
      Parameters:
      minPort - 端口最小值(包含)
      Returns:
      可用的端口
    • getUsableLocalPort

      public static int getUsableLocalPort(int minPort, int maxPort)
      查找指定范围内的可用端口 此方法只检测给定范围内的随机一个端口,检测maxPort-minPort次
      Parameters:
      minPort - 端口最小值(包含)
      maxPort - 端口最大值(包含)
      Returns:
      可用的端口
    • getLocalHardwareAddress

      public static byte[] getLocalHardwareAddress()
      获得本机物理地址
      Returns:
      本机物理地址
    • getHardwareAddress

      public static byte[] getHardwareAddress(InetAddress inetAddress)
      获得指定地址信息中的硬件地址
      Parameters:
      inetAddress - InetAddress
      Returns:
      硬件地址
    • getUsableLocalPorts

      public static TreeSet<Integer> getUsableLocalPorts(int numRequested, int minPort, int maxPort)
      获取多个本地可用端口
      Parameters:
      numRequested - int
      minPort - 端口最小值(包含)
      maxPort - 端口最大值(包含)
      Returns:
      可用的端口
    • isInnerIP

      public static boolean isInnerIP(String ipAddress)
      判定是否为内网IP 私有IP:A类 10.0.0.0-10.255.255.255 B类 172.16.2.2-172.31.255.255 C类 192.168.0.0-192.168.255.255 当然,还有127这个网段是环回地址
      Parameters:
      ipAddress - IP地址
      Returns:
      是否为内网IP
    • toAbsoluteUrl

      public static String toAbsoluteUrl(String absoluteBasePath, String relativePath)
      相对URL转换为绝对URL
      Parameters:
      absoluteBasePath - 基准路径,绝对
      relativePath - 相对路径
      Returns:
      绝对URL
    • hideIpPart

      public static String hideIpPart(String ip)
      隐藏掉IP地址的最后一部分为 * 代替
      Parameters:
      ip - IP地址
      Returns:
      隐藏部分后的IP
    • hideIpPart

      public static String hideIpPart(long ip)
      隐藏掉IP地址的最后一部分为 * 代替
      Parameters:
      ip - IP地址
      Returns:
      隐藏部分后的IP
    • buildInetSocketAddress

      public static InetSocketAddress buildInetSocketAddress(String host, int defaultPort)
      构建InetSocketAddress 当host中包含端口时(用“:”隔开),使用host中的端口,否则使用默认端口 给定host为空时使用本地host(127.0.0.1)
      Parameters:
      host - Host
      defaultPort - 默认端口
      Returns:
      InetSocketAddress
    • getIpByHost

      public static String getIpByHost(String hostName)
      通过域名得到IP
      Parameters:
      hostName - HOST
      Returns:
      ip address or hostName if UnknownHostException
    • getNetworkInterface

      public static NetworkInterface getNetworkInterface(String name)
      获取指定名称的网卡信息
      Parameters:
      name - 网络接口名,例如Linux下默认是eth0
      Returns:
      网卡,未找到返回null
    • getNetworkInterfaces

      public static Collection<NetworkInterface> getNetworkInterfaces()
      获取本机所有网卡
      Returns:
      所有网卡, 异常返回null
    • localIpv4s

      public static LinkedHashSet<String> localIpv4s()
      获得本机的IPv4地址列表 返回的IP列表有序,按照系统设备顺序
      Returns:
      IP地址列表 LinkedHashSet
    • localIpv6s

      public static LinkedHashSet<String> localIpv6s()
      获得本机的IPv6地址列表 返回的IP列表有序,按照系统设备顺序
      Returns:
      IP地址列表 LinkedHashSet
    • toIpList

      public static LinkedHashSet<String> toIpList(Set<InetAddress> addressList)
      地址列表转换为IP地址列表
      Parameters:
      addressList - 地址Inet4Address 列表
      Returns:
      IP地址字符串列表
    • localIps

      public static LinkedHashSet<String> localIps()
      获得本机的IP地址列表(包括Ipv4和Ipv6) 返回的IP列表有序,按照系统设备顺序
      Returns:
      IP地址列表 LinkedHashSet
    • localAddressList

      public static LinkedHashSet<InetAddress> localAddressList(Filter<InetAddress> addressFilter)
      获取所有满足过滤条件的本地IP地址对象
      Parameters:
      addressFilter - 过滤器,null表示不过滤,获取所有地址
      Returns:
      过滤后的地址对象列表
    • getLocalhostStr

      public static String getLocalhostStr()
      获取本机网卡IP地址,这个地址为所有网卡中非回路地址的第一个 如果获取失败调用 InetAddress.getLocalHost()方法获取 此方法不会抛出异常,获取失败将返回null

      参考:http://stackoverflow.com/questions/9481865/getting-the-ip-address-of-the-current-machine-using-java

      Returns:
      本机网卡IP地址, 获取失败返回null
    • getLocalhost

      public static InetAddress getLocalhost()
      获取本机网卡IP地址,规则如下:
       1. 查找所有网卡地址,必须非回路(loopback)地址、非局域网地址(siteLocal)、IPv4地址
       2. 如果无满足要求的地址,调用 InetAddress.getLocalHost() 获取地址
       

      此方法不会抛出异常,获取失败将返回null

      Returns:
      本机网卡IP地址, 获取失败返回null
    • getLocalHostName

      public static String getLocalHostName()
      获取主机名称,一次获取会缓存名称
      Returns:
      主机名称
    • getLocalMacAddress

      public static String getLocalMacAddress()
      获得本机MAC地址
      Returns:
      本机MAC地址
    • getMacAddress

      public static String getMacAddress(InetAddress inetAddress)
      获得指定地址信息中的MAC地址,使用分隔符“-”
      Parameters:
      inetAddress - InetAddress
      Returns:
      MAC地址, 用-分隔
    • getMacAddress

      public static String getMacAddress(InetAddress inetAddress, String separator)
      获得指定地址信息中的MAC地址
      Parameters:
      inetAddress - InetAddress
      separator - 分隔符,推荐使用“-”或者“:”
      Returns:
      MAC地址, 用-分隔
    • createAddress

      public static InetSocketAddress createAddress(String host, int port)
      Parameters:
      host - 域名或IP地址,空表示任意地址
      port - 端口,0表示系统分配临时端口
      Returns:
      InetSocketAddress
    • netCat

      public static void netCat(String host, int port, boolean isBlock, ByteBuffer data) throws InstrumentException
      简易的使用Socket发送数据
      Parameters:
      host - Server主机
      port - Server端口
      isBlock - 是否阻塞方式
      data - 需要发送的数据
      Throws:
      InstrumentException - IO异常
    • netCat

      public static void netCat(String host, int port, byte[] data) throws InstrumentException
      使用普通Socket发送数据
      Parameters:
      host - Server主机
      port - Server端口
      data - 数据
      Throws:
      InstrumentException - 异常
    • isInRange

      public static boolean isInRange(String ip, String cidr)
      是否在CIDR规则配置范围内 方法来自:【成都】小邓
      Parameters:
      ip - 需要验证的IP
      cidr - CIDR规则
      Returns:
      是否在范围内
    • idnToASCII

      public static String idnToASCII(String unicode)
      Unicode域名转puny code
      Parameters:
      unicode - Unicode域名
      Returns:
      puny code
    • getMultistageReverseProxyIp

      public static String getMultistageReverseProxyIp(String ip)
      从多级反向代理中获得第一个非unknown IP地址
      Parameters:
      ip - 获得的IP地址
      Returns:
      第一个非unknown IP地址
    • isUnknown

      public static boolean isUnknown(String checkString)
      检测给定字符串是否为未知,多用于检测HTTP请求相关
      Parameters:
      checkString - 被检测的字符串
      Returns:
      是否未知
    • ping

      public static boolean ping(String ip)
      检测IP地址是否能ping通
      Parameters:
      ip - IP地址
      Returns:
      the true/false 返回是否ping通
    • ping

      public static boolean ping(String ip, int timeout)
      检测IP地址是否能ping通
      Parameters:
      ip - IP地址
      timeout - 检测超时(毫秒)
      Returns:
      the true/false 是否ping通
    • parseCookies

      public static List<HttpCookie> parseCookies(String cookieStr)
      解析Cookie信息
      Parameters:
      cookieStr - Cookie字符串
      Returns:
      cookie字符串
    • isOpen

      public static boolean isOpen(InetSocketAddress address, int timeout)
      检查远程端口是否开启
      Parameters:
      address - 远程地址
      timeout - 检测超时
      Returns:
      远程端口是否开启
    • getDnsInfo

      public static List<String> getDnsInfo(String hostName, String... attrNames)
      获取DNS信息,如TXT信息:
           NetKit.attrNames("aoju.org", "TXT")
       
      Parameters:
      hostName - 主机域名
      attrNames - 属性
      Returns:
      DNS信息
    • createInitialDirContext

      public static InitialDirContext createInitialDirContext(Map<String,String> environment)
      Parameters:
      environment - 环境参数,{code null}表示无参数
      Returns:
      InitialDirContext
    • createInitialContext

      public static InitialContext createInitialContext(Map<String,String> environment)
      Parameters:
      environment - 环境参数,{code null}表示无参数
      Returns:
      InitialContext
    • getAttributes

      public static Attributes getAttributes(String uri, String... attrIds)
      获取指定容器环境的对象的属性 如获取DNS属性,则URI为类似:dns:aoju.cn
      Parameters:
      uri - URI字符串,格式为[scheme:][name]/[domain]
      attrIds - 需要获取的属性ID名称
      Returns:
      Attributes