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


相关推荐

  • WinHTTP 会话概览

    WinHTTP 会话概览WinHTTP会话概览TheMicrosoftWindowsHTTPServices(WinHTTP)exposesasetofC/C++functionsthatenableyourapplicationtoaccessHTTPresourcesontheWeb.Thistopicprovidesanoverviewofho

    2022年7月11日
    26
  • 10月30日 迅雷白金会员vip账号分享「建议收藏」

    10月30日 迅雷白金会员vip账号分享「建议收藏」www.91freevip,就要免费VIP网10月30日8:53更新迅雷会员VIP账号:迅雷vip账号894273128:1密码3579791迅雷vip账号juhao11:2密码19577

    2022年7月1日
    28
  • Java程序设计(基础)- 概述

    Java程序设计(基础)- 概述

    2021年7月21日
    60
  • 巧设IP路由 实现不同网段互通[通俗易懂]

    巧设IP路由 实现不同网段互通[通俗易懂]【简介】当一个局域网中必须存在两个以上网段时,分属于不同网段内的主机彼此互不可见。为了解决这个问题,就必须在不同的网段之间设置路由器。如果花费上万元资金购买一台路由器,仅仅用于连接局域网中的两个网段,实在不值得。有什么好的解决方案吗?当然有,这就是Windows中的IP路由。  当一个局域网中必须存在两个以上网段时,分属于不同网段内的主机彼此互不可见。为了解决这个问题,就必须在不同的网段之间设置…

    2025年10月31日
    2
  • Linux系统打不开gedit文本编辑器

    Linux系统打不开gedit文本编辑器写实验发现打不开gedit,报错如下:Unabletoinitserver:无法连接:拒绝连接(gedit:1289):Gtk-WARNIING**:20:46:00.562:cannotopendisplay于是收录各种gedit不能用原因如下(错误提示不一定和上面一样):原因1:vnc连接被禁用了。这种情况下一般虚拟机也没连上网(打开浏览器显示没网),打开虚拟机设置>选项>vnc连接,启用。具体参数设置可看链接(Vmware官网,将虚拟机配置为V..

    2022年7月26日
    56
  • oracle面试必会6题经典_oracle常见面试题

    oracle面试必会6题经典_oracle常见面试题1.你要对操纵Oracle数据库中的数据。下列哪个选项表示Oracle中select语句的功能,并且不需要使用子查询(C)A.可以用select语句改变Oracle中的数据B.可以用select语句删除Oracle中的数据C.可以用select语句和另一个表的内容生成一个表D.可以用select语句对表截断2.你要在Oracle中定义SQL查询。下列哪个数据库对象不能直接从select语句中引用…

    2022年10月18日
    2

发表回复

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

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