InetAddress方法详解[通俗易懂]

InetAddress方法详解[通俗易懂]Java提供了InetAddress类来代表IP地址,InetAddress下还有两个子类:Inet4Address、Inet6Address,它们分别代表InternetProtocolversion4(IPv4)地址和InternetProtocolversion6(IPv6)地址。

大家好,又见面了,我是你们的朋友全栈君。

        Java提供了InetAddress类来代表IP地址,InetAddress下还有两个子类:Inet4AddressInet6Address,它们分别代表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.net/152255.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jQuery和CSS3炫酷button点击波特效「建议收藏」

    jQuery和CSS3炫酷button点击波特效

    2022年3月5日
    38
  • 使用Iocomp工控图表工具绘制实时曲线

    使用Iocomp工控图表工具绘制实时曲线概述:本文为使用Iocomp工控图表工具绘制实时曲线探索及研究教程,为大家介绍了Iocomp控件、实时曲线绘制方法、Iocomp界面操作,属性分类等。帮助学习者更好的运用Iocomp。

    2022年7月17日
    18
  • TiKV学习笔记

    TiKV学习笔记一、TiKV简介1.1、TiKV概述TiDB的存储用的TiKV,TiKV是基于RocksDB实现了分布式(可水平扩展,支持主从),RocksDB是对单机版LevelDB的封装。TiKV是开源的、分布式、支持事务的VK数据库。TiKV不仅提供了KV的API,且提供了兼容ACID的API。TiKV用Rust语言实现,用采用Raft协议,作为TiDB的存储层,是一个兼容了MySQL协议的分布式HTAP数据库。TiKV保证数据一致性,TiKV基于Rust语言实现了Raft协议,一致性状态存储在Rock

    2022年9月24日
    0
  • 离散数学传递闭包_传递闭包一定等于自身的是

    离散数学传递闭包_传递闭包一定等于自身的是给定 n 个变量和 m 个不等式。其中 n 小于等于 26,变量分别用前 n 的大写英文字母表示。不等式之间具有传递性,即若 A>B 且 B>C,则 A>C。请从前往后遍历每对关系,每次遍历时判断:如果能够确定全部关系且无矛盾,则结束循环,输出确定的次序;如果发生矛盾,则结束循环,输出有矛盾;如果循环结束时没有发生上述两种情况,则输出无定解。输入格式输入包含多组测试数据。每组测试数据,第一行包含两个整数 n 和 m。接下来 m 行,每行包含一个不等式,不等式全部为小于关系

    2022年8月9日
    3
  • springboot启动流程详解_网页解析的详细过程

    springboot启动流程详解_网页解析的详细过程SpringBoot启动流程和加载顺序,以及思考心得

    2022年8月21日
    3
  • 7、 正则化(Regularization)

    7、 正则化(Regularization)7.1过拟合的问题到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(over-fittin

    2022年7月4日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号