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)
上一篇 2022年6月23日 下午5:00
下一篇 2022年6月23日 下午5:16


相关推荐

  • MySQL初始化配置

    MySQL初始化配置刚安装完成 MySQL 后 在进入 MySQL 时 总是有错误提示 mysql uroot pEnterpasswo ERROR1045 28000 Accessdenied root localhost usingpasswor NO 或者 mysql uroot ppassword newpassword E

    2026年3月16日
    2
  • densenet网络结构详解_网络dea模型

    densenet网络结构详解_网络dea模型网络基本结构 我们放大一下DenseBlockDenseBlock 上图中每一次的输入都是经过Channel-wiseconcatenation后的,如k0+k,k为growthrate。denseblock一个核心的点就是:每一层的输入来自前面所有层的输出。如下,H2的输入=最开始的输入 + H1的输出= k0+kH3的输入=最开始的输入 …

    2026年4月16日
    7
  • JAVA语言实现计算器

    JAVA语言实现计算器JAVA语言实现计算器

    2022年7月19日
    19
  • 任推邦,即梦AI拉新:字节系新项目,门槛低,小白0基础上手攻略!

    任推邦,即梦AI拉新:字节系新项目,门槛低,小白0基础上手攻略!

    2026年3月13日
    3
  • 数据建模方法及步骤图_comsol建模步骤教程

    数据建模方法及步骤图_comsol建模步骤教程何为建模?数据几乎总是用于两种目的:操作型记录的保存和分析型决策的制定。简单来说,操作型系统保存数据,分型型系统使用数据。前者一般仅反映数据的最新状态,按单条记录事务性来处理;其优化的核心是更快地处理事务。后者往往是反映数据一段时间的状态变化,按大批量方式处理数据;其核心是高性能、多维度处理数据。通常我们将操作型系统简称为OLTP(On-LineTransactionProcessing)…

    2025年12月6日
    10
  • win7显示安装程序正在启动服务器失败,Win7安装程序正在启动服务怎么办?

    win7显示安装程序正在启动服务器失败,Win7安装程序正在启动服务怎么办?许多用户在使用电脑的时候,都会时不时的重装一下电脑系统。但是最近有不少用户反应自己在安装Windows7系统的时候,卡在程序正在启动服务。那么这要怎么办呢?下面小编就带着大家一起看看吧!操作方法:1、使用Windows光盘或者U盘引导,进入系统安装界面。按【Shift+F10】打开命令提示符。2、输入【Diskpart】(不用输入引号,下同),按【回车】,进入操作界面。3、输入【listdi…

    2022年6月26日
    38

发表回复

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

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