Package org.miaixz.bus.core.xyz
Class NetKit
java.lang.Object
org.miaixz.bus.core.xyz.NetKit
网络相关工具
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic InetSocketAddresscreateAddress(String host, int port) static StringgetAddressName(InetAddress address) 获取地址名称,如果无名称返回地址 如果提供的地址为null返回nullgetDnsInfo(String hostName, String... attrNames) 获取DNS信息,如TXT信息:static byte[]getHardwareAddress(InetAddress inetAddress) 获得指定地址信息中的硬件地址(MAC地址)static StringgetIpByHost(String hostName) 通过域名得到IPstatic String获取本机网卡IP地址,这个地址为所有网卡中非回路地址的第一个 如果获取失败调用InetAddress.getLocalHost()方法获取。 此方法不会抛出异常,获取失败将返回null参考: http://stackoverflow.com/questions/9481865/getting-the-ip-address-of-the-current-machine-using-javastatic InetAddress获取本机网卡IPv4地址,规则如下: 必须非回路(loopback)地址、非局域网地址(siteLocal)、IPv4地址 多网卡则返回第一个满足条件的地址 如果无满足要求的地址,调用InetAddress.getLocalHost()获取地址static String获得本机MAC地址,默认使用获取到的IPv4本地地址对应网卡static StringgetMacAddress(InetAddress inetAddress) 获得指定地址信息中的MAC地址,使用分隔符“-”static StringgetMacAddress(InetAddress inetAddress, String separator) 获得指定地址信息中的MAC地址static String从多级反向代理中获得第一个非unknown IP地址static NetworkInterfacegetNetworkInterface(String name) 获取指定名称的网卡信息static Collection<NetworkInterface> 获取本机所有网卡static int查找1024~65535范围内的可用端口 此方法只检测给定范围内的随机一个端口,检测65535-1024次static intgetUsableLocalPort(int minPort) 查找指定范围内的可用端口,最大值为65535 此方法只检测给定范围内的随机一个端口,检测65535-minPort次static intgetUsableLocalPort(int minPort, int maxPort) 查找指定范围内的可用端口 此方法只检测给定范围内的随机一个端口,检测maxPort-minPort次getUsableLocalPorts(int numRequested, int minPort, int maxPort) 获取多个本地可用端口static StringhideIpPart(long ip) 隐藏掉IP地址的最后一部分为 * 代替static StringhideIpPart(String ip) 隐藏掉IP地址的最后一部分为 * 代替static StringidnToASCII(String unicode) Unicode域名转puny codestatic longipv4ToLong(String strIP) 根据ip地址计算出long型的数据static boolean判定是否为内网IPv4 私有IP:static boolean是否在CIDR规则配置范围内 方法来自:【成都】小邓static booleanisOpen(InetSocketAddress address, int timeout) 检查远程端口是否开启static boolean检测给定字符串是否为未知,多用于检测HTTP请求相关static booleanisUsableLocalPort(int port) 检测本地端口可用性static booleanisValidPort(int port) 是否为有效的端口 此方法并不检查端口是否被占用static LinkedHashSet<InetAddress> localAddressList(Predicate<InetAddress> addressPredicate) 获取所有满足过滤条件的本地IP地址对象static LinkedHashSet<InetAddress> localAddressList(Predicate<NetworkInterface> networkInterfaceFilter, Predicate<InetAddress> addressPredicate) 获取所有满足过滤条件的本地IP地址对象static LinkedHashSet<String> localIps()获得本机的IP地址列表(包括Ipv4和Ipv6) 返回的IP列表有序,按照系统设备顺序static LinkedHashSet<String> 获得本机的IPv4地址列表 返回的IP列表有序,按照系统设备顺序static StringlongToIpv4(long longIP) 根据long值获取ip v4地址static voidnetCat(String host, int port, boolean isBlock, ByteBuffer data) 简易的使用Socket发送数据static void使用普通Socket发送数据static List<HttpCookie> parseCookies(String cookieStr) 解析Cookie信息static boolean检测IP地址是否能ping通static boolean检测IP地址是否能ping通static voidsetGlobalAuthenticator(String user, char[] pass) 设置全局验证static voidsetGlobalAuthenticator(Authenticator authenticator) 设置全局验证static StringtoAbsoluteUrl(String absoluteBasePath, String relativePath) 相对URL转换为绝对URLstatic LinkedHashSet<String> toIpList(Set<InetAddress> addressList) 地址列表转换为IP地址列表static StringtoMacAddress(byte[] mac, String separator) 将bytes类型的mac地址转换为可读字符串,通常地址每个byte位使用16进制表示,并用指定分隔符分隔
-
Constructor Details
-
NetKit
public NetKit()
-
-
Method Details
-
longToIpv4
根据long值获取ip v4地址- Parameters:
longIP- IP的long表示形式- Returns:
- IP V4 地址
- See Also:
-
ipv4ToLong
根据ip地址计算出long型的数据- Parameters:
strIP- IP V4 地址- Returns:
- long值
- See Also:
-
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:
- 可用的端口
-
getUsableLocalPorts
获取多个本地可用端口- Parameters:
numRequested- 尝试次数minPort- 端口最小值(包含)maxPort- 端口最大值(包含)- Returns:
- 可用的端口
-
isInnerIP
判定是否为内网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这个网段是环回地址- Parameters:
ipAddress- IP地址- Returns:
- 是否为内网IP
- See Also:
-
toAbsoluteUrl
相对URL转换为绝对URL- Parameters:
absoluteBasePath- 基准路径,绝对relativePath- 相对路径- Returns:
- 绝对URL
-
hideIpPart
隐藏掉IP地址的最后一部分为 * 代替- Parameters:
ip- IP地址- Returns:
- 隐藏部分后的IP
-
hideIpPart
隐藏掉IP地址的最后一部分为 * 代替- Parameters:
ip- IP地址- Returns:
- 隐藏部分后的IP
-
getIpByHost
通过域名得到IP- Parameters:
hostName- HOST- Returns:
- ip address or hostName if UnknownHostException
-
getNetworkInterface
获取指定名称的网卡信息- Parameters:
name- 网络接口名,例如Linux下默认是eth0- Returns:
- 网卡,未找到返回
null
-
getNetworkInterfaces
获取本机所有网卡- Returns:
- 所有网卡,异常返回
null
-
localIpv4s
获得本机的IPv4地址列表 返回的IP列表有序,按照系统设备顺序- Returns:
- IP地址列表
LinkedHashSet
-
toIpList
地址列表转换为IP地址列表- Parameters:
addressList- 地址Inet4Address列表- Returns:
- IP地址字符串列表
-
localIps
获得本机的IP地址列表(包括Ipv4和Ipv6) 返回的IP列表有序,按照系统设备顺序- Returns:
- IP地址列表
LinkedHashSet
-
localAddressList
获取所有满足过滤条件的本地IP地址对象- Parameters:
addressPredicate- 过滤器,Predicate.test(Object)为true保留,null表示不过滤,获取所有地址- Returns:
- 过滤后的地址对象列表
-
localAddressList
public static LinkedHashSet<InetAddress> localAddressList(Predicate<NetworkInterface> networkInterfaceFilter, Predicate<InetAddress> addressPredicate) 获取所有满足过滤条件的本地IP地址对象- Parameters:
networkInterfaceFilter- 过滤器,null表示不过滤,获取所有网卡addressPredicate- 过滤器,Predicate.test(Object)为true保留,null表示不过滤,获取所有地址- Returns:
- 过滤后的地址对象列表
-
getLocalhostStringV4
获取本机网卡IP地址,这个地址为所有网卡中非回路地址的第一个 如果获取失败调用InetAddress.getLocalHost()方法获取。 此方法不会抛出异常,获取失败将返回null参考: http://stackoverflow.com/questions/9481865/getting-the-ip-address-of-the-current-machine-using-java- Returns:
- 本机网卡IP地址,获取失败返回
null
-
getLocalhostV4
获取本机网卡IPv4地址,规则如下:- 必须非回路(loopback)地址、非局域网地址(siteLocal)、IPv4地址
- 多网卡则返回第一个满足条件的地址
- 如果无满足要求的地址,调用
InetAddress.getLocalHost()获取地址
此方法不会抛出异常,获取失败将返回
null- Returns:
- 本机网卡IP地址,获取失败返回
null
-
getLocalMacAddressV4
获得本机MAC地址,默认使用获取到的IPv4本地地址对应网卡- Returns:
- 本机MAC地址
-
createAddress
- Parameters:
host- 域名或IP地址,空表示任意地址port- 端口,0表示系统分配临时端口- Returns:
InetSocketAddress
-
netCat
public static void netCat(String host, int port, boolean isBlock, ByteBuffer data) throws InternalException 简易的使用Socket发送数据- Parameters:
host- Server主机port- Server端口isBlock- 是否阻塞方式data- 需要发送的数据- Throws:
InternalException- IO异常
-
netCat
使用普通Socket发送数据- Parameters:
host- Server主机port- Server端口data- 数据- Throws:
InternalException- IO异常
-
isInRange
是否在CIDR规则配置范围内 方法来自:【成都】小邓- Parameters:
ip- 需要验证的IPcidr- CIDR规则- Returns:
- 是否在范围内
-
idnToASCII
Unicode域名转puny code- Parameters:
unicode- Unicode域名- Returns:
- puny code
-
getMultistageReverseProxyIp
从多级反向代理中获得第一个非unknown IP地址- Parameters:
ip- 获得的IP地址- Returns:
- 第一个非unknown IP地址
-
isUnknown
检测给定字符串是否为未知,多用于检测HTTP请求相关- Parameters:
checkString- 被检测的字符串- Returns:
- 是否未知
-
ping
检测IP地址是否能ping通- Parameters:
ip- IP地址- Returns:
- 返回是否ping通
-
ping
检测IP地址是否能ping通- Parameters:
ip- IP地址timeout- 检测超时(毫秒)- Returns:
- 是否ping通
-
parseCookies
解析Cookie信息- Parameters:
cookieStr- Cookie字符串- Returns:
- cookie字符串
-
isOpen
检查远程端口是否开启- Parameters:
address- 远程地址timeout- 检测超时- Returns:
- 远程端口是否开启
-
setGlobalAuthenticator
设置全局验证- Parameters:
user- 用户名pass- 密码,考虑安全,此处不使用String
-
setGlobalAuthenticator
设置全局验证- Parameters:
authenticator- 验证器
-
getDnsInfo
获取DNS信息,如TXT信息:NetKit.attrNames("xxx.cn", "TXT")- Parameters:
hostName- 主机域名attrNames- 属性- Returns:
- DNS信息
-
getAddressName
获取地址名称,如果无名称返回地址 如果提供的地址为null返回null- Parameters:
address-InetAddress,提供null返回null- Returns:
- 地址名称或地址
-
getMacAddress
获得指定地址信息中的MAC地址,使用分隔符“-”- Parameters:
inetAddress-InetAddress- Returns:
- MAC地址,用-分隔
-
getMacAddress
获得指定地址信息中的MAC地址- Parameters:
inetAddress-InetAddressseparator- 分隔符,推荐使用“-”或者“:”- Returns:
- MAC地址,用-分隔
-
getHardwareAddress
获得指定地址信息中的硬件地址(MAC地址)- Parameters:
inetAddress-InetAddress- Returns:
- 硬件地址
-
toMacAddress
将bytes类型的mac地址转换为可读字符串,通常地址每个byte位使用16进制表示,并用指定分隔符分隔- Parameters:
mac- MAC地址(网卡硬件地址)separator- 分隔符- Returns:
- MAC地址字符串
-