大家好,又见面了,我是你们的朋友全栈君。
Java提供了InetAddress类来代表IP地址,InetAddress下还有两个子类:Inet4Address、Inet6Address,它们分别代表Internet Protocol version 4(IPv4)地址和Internet Protocol version 6(IPv6)地址。
InetAddress类的方法详解:
boolean isMulticastAddress():检查 InetAddress 是否为 IP 多播地址的实用程序例程。 IP v4多播地址是 D 类地址,即地址的前四位是 1110; IPv6地址开头的 11111111 将该地址标识为多播地址。
boolean isAnyLocalAddress():检查 InetAddress 是否为通配符地址的实用程序例程。
boolean isLoopbackAddress():用于检查 InetAddress 是否为回环地址的实用程序。(127.x.x.x)
boolean isLinkLocalAddress():检查 InetAddress 是否为链路本地地址的实用程序例程。(169.254.0.0/16)
boolean isSiteLocalAddress():检查 InetAddress 是否为站点本地地址的实用程序例程。参考RFC 1918 10/8 前缀 172.16/12 前缀 192.168/16 前缀
boolean isMCGlobal():用于检查多播地址是否具有全局范围的实用程序。 (224.0.1.0 to 238.255.255.255)
boolean isMCNodeLocal():检查多播地址是否具有节点范围的实用程序。
boolean isMCLinkLocal():检查多播地址是否具有链接范围的实用程序。 (224.0.0/24 前缀 并且 ttl == 1)
boolean isMCSiteLocal():用于检查多播地址是否具有站点范围的实用程序。 (239.255/16 前缀 或者 ttl < 32)
boolean isMCOrgLocal():检查多播地址是否具有组织范围的实用程序。(239.192 - 239.195)
boolean isReachable(int timeout):等价于isReachable(null, 0 , timeout) boolean isReachable(NetworkInterface netif, int ttl, int timeout):测试该地址是否可达。 实现会尽最大努力尝试访问主机,但防火墙和服务器配置可能会阻止请求,导致无法访问状态,而某些特定端口可能可以访问。 如果可以获得特权,典型的实现将使用 ICMP ECHO REQUEST,否则它将尝试在目标主机的端口 7(Echo)上建立 TCP 连接。 network interface和ttl参数让调用者指定测试将通过哪个网络接口以及数据包应该通过的最大跳数。 ttl负值将导致抛出 IllegalArgumentException。 超时值(以毫秒为单位)指示尝试应花费的最长时间。 如果操作在得到应答前超时,则认为主机不可达。负值将导致抛出 IllegalArgumentException。 参数: netif – 将通过其完成测试的 NetworkInterface,或者为任何接口为 null ttl – 要尝试的最大跳数或默认值为 0 timeout – 调用中止前的时间(以毫秒为单位)
String getHostName():获取此 IP 地址的主机名。 如果这个 InetAddress 是用主机名创建的,这个主机名将被记住并返回; 否则,将执行反向名称查找,并根据系统配置的名称查找服务返回结果。 如果需要查找名称服务,请调用getCanonicalHostName 。 如果有安全管理器,则首先使用主机名和-1作为参数调用其checkConnect方法,以查看是否允许操作。 如果操作不被允许,它将返回 IP 地址的文本表示。 返回值: 此 IP 地址的主机名,或者如果安全检查不允许操作,则为 IP 地址的文本表示。
String getCanonicalHostName():获取此 IP 地址的完全限定域名。 尽力而为的方法,这意味着我们可能无法根据底层系统配置返回 FQDN。 如果有安全管理器,这个方法首先用主机名和-1作为参数调用它的checkConnect方法,看看是否允许调用代码知道这个IP 地址的主机名,即连接到主机。 如果操作不被允许,它将返回 IP 地址的文本表示。 返回值: 此 IP 地址的完全限定域名,或者如果安全检查不允许操作,则为 IP 地址的文本表示。
byte[] getAddress():返回此InetAddress对象的原始 IP 地址。 结果按网络字节顺序排列:地址的最高顺序字节在getAddress()[0] 。
String getHostAddress():以文本形式返回 IP 地址字符串。 返回值: 字符串格式的原始 IP 地址。
static InetAddress getByAddress(String host, byte[] addr):根据提供的主机名和 IP 地址创建 InetAddress。 没有名称服务检查地址的有效性。 主机名可以是机器名称,例如“ java.sun.com ”,也可以是其 IP 地址的文本表示。也不会对主机名进行有效性检查。 如果 addr 指定了 IPv4 地址,则将返回 Inet4Address 的实例; 否则,将返回 Inet6Address 的实例。 IPv4 地址字节数组必须为 4 字节长,IPv6 字节数组必须为 16 字节长 参数: 主机 - 指定的主机 addr – 网络字节顺序的原始 IP 地址 返回值: 从原始 IP 地址创建的 InetAddress 对象。
static InetAddress getByName(String host):根据主机名确定主机的 IP 地址。 主机名可以是机器名称,例如“ java.sun.com ”,也可以是其 IP 地址的文本表示。 如果提供了文字 IP 地址,则仅检查地址格式的有效性。 对于以文字 IPv6 地址指定的host ,接受 RFC 2732 中定义的格式或 RFC 2373 中定义的文字 IPv6 地址格式。 还支持 IPv6 范围地址。 有关 IPv6 范围地址的说明,请参见此处。 如果主机为null则返回表示环回接口地址的InetAddress 。 请参阅RFC 3330 第 2 节和RFC 2373 第 2.5.3 节。 参数: host – 指定的主机,或null 。 返回值: 给定主机名的 IP 地址。
static InetAddress[] getAllByName(String host):给定主机的名称,根据系统上配置的名称服务返回其 IP 地址的数组。 主机名可以是机器名称,例如“ java.sun.com ”,也可以是其 IP 地址的文本表示。 如果提供了文字 IP 地址,则仅检查地址格式的有效性。 对于在文本 IPv6 地址中指定的host ,接受 RFC 2732 中定义的格式或 RFC 2373 中定义的文本 IPv6 地址格式。 也可以通过附加范围区域标识符或 scope_id 来限定文字 IPv6 地址。 此处描述了 scope_ids 的语法和用法。 如果主机为null则返回表示环回接口地址的InetAddress 。 请参阅RFC 3330 第 2 节和RFC 2373 第 2.5.3 节。 如果存在安全管理器且host不为 null 且host.length()不等于零,则使用主机名和-1作为参数调用安全管理器的checkConnect方法,以查看是否允许操作。 参数: host – 主机的名称,或null。 返回值: 给定主机名的所有 IP 地址的数组。
static InetAddress getLoopbackAddress():返回环回地址。返回的 InetAddress 将代表 IPv4 环回地址 127.0.0.1 或 IPv6 环回地址 ::1。 返回的 IPv4 环回地址只是 127.*.*.* 形式的众多地址之一。
static InetAddress getByAddress(byte[] addr):返回给定原始 IP 地址的InetAddress对象。 参数按网络字节顺序排列:地址的最高顺序字节在getAddress()[0] 。 此方法不会阻塞,即不执行反向名称服务查找。 IPv4 地址字节数组必须为 4 字节长,IPv6 字节数组必须为 16 字节长 参数: addr – 网络字节顺序的原始 IP 地址 返回值: 从原始 IP 地址创建的 InetAddress 对象。
static InetAddress getLocalHost():返回本地主机的地址。 这是通过从系统检索主机的名称,然后将该名称解析为InetAddress 。 注意:解析后的地址可能会被缓存一小段时间。如果存在安全管理器,则使用本地主机名和-1作为参数调用其checkConnect方法,以查看是否允许操作。 如果不允许该操作,则返回表示环回地址的 InetAddress。 返回值:本地主机的地址。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152255.html原文链接:https://javaforall.cn