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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Unix/Linux环境C编程新手教程(22) C/C++怎样获取程序的执行时间「建议收藏」

    Unix/Linux环境C编程新手教程(22) C/C++怎样获取程序的执行时间

    2022年1月29日
    43
  • 【21】进大厂必须掌握的面试题-65个SQL面试

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 Q1。SQL和MySQL有什么区别? SQL MySQL SQL是一种标准语言,代表基于英语的结构化查询语言 MyS…

    2021年6月24日
    83
  • 浅谈Springcloud和Dubbo的区别「建议收藏」

    浅谈Springcloud和Dubbo的区别「建议收藏」最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构 。近期也看到各大技术社区开始组织一些沙龙和论坛来分享spring Cloud的相关实施经验,这对于最近正在整理SpringCloud相关套件内容与实例应用的我而言,还是有不少激励的。目前,SpringCloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师、技术VP或者CTO在交流…

    2022年6月7日
    27
  • php使用PdfParser搭配tcpdf解析pdf文件

    php使用PdfParser搭配tcpdf解析pdf文件前几天客户提出一个需求,就是在前台页面搜索文章时,若搜索词在文章附件的pdf文件中有出现的话就要将该文章作为搜索结果。我的思路是后台发布文章时循环检测每一个附件的格式,若附件格式为pdf的话就将里面的文字读取出来追加到一个$string变量里,然后将$string的作为一个file_text字段的信息保存到数据库后面做搜索的时候使用。我参考的一个回答地址是:https://baijiahao……

    2025年10月5日
    2
  • 分布式系统的 CAP 定理

    分布式系统的 CAP 定理CAP定理指出,在一个分布式系统中,对于一致性、可用性、分区容错这三个特性,不可能同时满足,而是必须有所舍弃。我们设计分布式系统时,必须在三者之间(尤其是一致性和可用性之间)有所取舍和平衡。作者:王克锋出处:https://kefeng.wang/2018/07/26/distributed-cap/版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。1概述…

    2025年7月20日
    1
  • android 启动界面修改工具下载,安卓开机画面更改软件

    android 启动界面修改工具下载,安卓开机画面更改软件安卓开机画面修改是第一屏那个LOGO。。。不是动画,不是第二屏…跟品牌没有关系,是安卓系统的关系!!!开机第一屏不是平时常见的图片格式,这个需要你下载个专门修改开机第一屏的软件来修改,具体每个手机不同版本之间的案桌系统的开机第一屏目录也不一样,这个需要刷机一样刷进去,不能手机里自己改,你到机锋网论坛搜索一下吧,里面有,我这里不方便给你具体地址,怕又被百度给审核了记得千万要对应你的手机型号的…

    2022年5月15日
    61

发表回复

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

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