树叶云鸿蒙OS教程:鸿蒙OS Inet6Address

Inet6Address

java.lang.Object

|—java.net.InetAddress

|—|—java.net.Inet6Address

public final class Inet6Address
extends InetAddress

此类表示 Internet 协议版本 6 (IPv6) 地址。 由 RFC 2373 定义:IP 版本 6 寻址体系结构。 IP 地址的文本表示用作方法输入的 IPv6 地址的文本表示采用以下形式之一:

  1. 首选形式是 xxxx:x,其中 ‘x’ 是地址的八个 16 位片段的十六进制值。这是完整的表格。例如,

请注意,不必在单个字段中写入前导零。但是,每个字段中必须至少有一个数字,除非如下所述。

  1. 由于某些分配某些样式的 IPv6 地址的方法,地址通常会包含长的零位字符串。为了使写入包含零位的地址更容易,可以使用一种特殊的语法来压缩零。使用“::”表示多组 16 位零。 “::”在一个地址中只能出现一次。 “::”也可用于压缩地址中的前导和/或尾随零。例如,
  1. 在处理 IPv4 和 IPv6 节点的混合环境时,有时更方便的另一种形式是 xxxd.d.d.d,其中 ‘x’ 是六个高位 16 位的十六进制值地址片段,’d’ 是标准 IPv4 表示地址的四个低位 8 位片段的十进制值,例如,

其中 “::FFFF:d.d.d.d” 和 “::d.d.d.d” 分别是 IPv4 映射的 IPv6 地址和 IPv4 兼容的 IPv6 地址的一般形式。请注意,IPv4 部分必须采用“d.d.d.d”形式。以下表格无效:

以下表格:

是有效的,但是它是与 IPv4 兼容的 IPv6 地址的非常规表示,

而“::d”对应于通用 IPv6 地址“0:0:0:0:0:0:0:d”。

对于将文本表示形式作为输出值返回的方法,使用完整形式。 Inet6Address 将返回完整的形式,因为它在与其他文本数据结合使用时是明确的。

特殊 IPv6 地址

IPv6 范围地址的文本表示

如上所述的 IPv6 地址的文本表示可以扩展为指定 IPv6 范围的地址。 [draft-ietf-ipngwg-scoping-arch-04.txt] 中描述了对基本寻址架构的这种扩展。

因为链路本地地址和站点本地地址是非全局地址,所以不同的主机可能具有相同的目标地址,并且可以通过同一源系统上的不同接口访问。在这种情况下,始发系统被称为连接到同一范围的多个区域。为了区分哪个是预期的目标区域,可以将区域标识符(或 scope_id)附加到 IPv6 地址。

指定 scope_id 的一般格式如下:

IPv6 地址%scope_id

IPv6 地址是如上所述的文字 IPv6 地址。 scope_id 指的是本地系统上的一个接口,它可以通过两种方式指定。

  1. 作为数字标识符。 这必须是一个正整数,用于标识系统理解的特定接口和范围。 通常,数值可以通过系统上的管理工具来确定。 每个接口可能有多个值,每个范围一个。 如果未指定范围,则使用的默认值为零。
  2. 作为字符串。 这必须是 NetworkInterface.getName() 针对相关特定接口返回的确切字符串。 以这种方式创建 Inet6Address 时,通过查询相关 NetworkInterface 在创建对象时确定数字范围 ID。

另请注意,数字 scope_id 可以从 NetworkInterface 类返回的 Inet6Address 实例中检索。 这可用于找出系统上配置的当前范围 ID。

方法总结

修饰符和类型方法描述
booleanequals(Object obj)将此对象与指定对象进行比较。
byte[]getAddress()返回此 InetAddress 对象的原始 IP 地址。
static Inet6AddressgetByAddress(String host, byte[] addr, int scope_id)以 InetAddress#getByAddress(String,byte[]) 的确切方式创建 Inet6Address,但 IPv6 scope_id 设置为给定的数值。
static Inet6AddressgetByAddress(String host, byte[] addr, NetworkInterface nif)以 InetAddress#getByAddress(String,byte[]) 的确切方式创建 Inet6Address,除了 IPv6 scope_id 设置为与 addr 中指定的地址类型的给定接口对应的值。
StringgetHostAddress()以文本形式返回 IP 地址字符串。
NetworkInterfacegetScopedInterface()如果此实例是使用作用域接口创建的,则返回作用域接口。
intgetScopeId()如果此实例与接口关联,则返回数字 scopeId。
inthashCode()返回此 IP 地址的哈希码。
booleanisAnyLocalAddress()检查 InetAddress 是否在通配符地址中的实用程序。
booleanisIPv4CompatibleAddress()检查 InetAddress 是否为与 IPv4 兼容的 IPv6 地址的实用程序。
booleanisLinkLocalAddress()检查 InetAddress 是否为链接本地地址的实用程序。
booleanisLoopbackAddress()检查 InetAddress 是否为环回地址的实用程序。
booleanisMCGlobal()检查多播地址是否具有全局范围的实用程序。
booleanisMCLinkLocal()检查多播地址是否具有链接范围的实用程序。
booleanisMCNodeLocal()检查多播地址是否具有节点范围的实用程序。
booleanisMCOrgLocal()检查多播地址是否具有组织范围的实用程序。
booleanisMCSiteLocal()检查多播地址是否具有站点范围的实用程序。
booleanisMulticastAddress()检查 InetAddress 是否为 IP 多播地址的实用程序。
booleanisSiteLocalAddress()检查 InetAddress 是否为站点本地地址的实用程序例程。
从类 java.net.InetAddress 继承的方法
getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, isReachable, isReachable, toString
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait

方法详情

getByAddress

public static Inet6Address getByAddress(String host, byte[] addr, NetworkInterface nif) throws UnknownHostException

以 InetAddress#getByAddress(String,byte[]) 的确切方式创建 Inet6Address,除了 IPv6 scope_id 设置为与 addr 中指定的地址类型的给定接口对应的值。 如果给定接口没有为给定地址类型(例如链接本地或站点本地)分配数字 scope_id,则调用将失败并返回 UnknownHostException。

参数:

参数名称参数描述
host指定的主机
addr网络字节顺序的原始 IP 地址
nif此地址必须关联的接口。

返回:

从原始 IP 地址创建的 Inet6Address 对象。

Throws:

Throw名称Throw描述
UnknownHostException如果 IP 地址的长度非法,或者接口没有为给定的地址类型分配数字 scope_id。

getByAddress

public static Inet6Address getByAddress(String host, byte[] addr, int scope_id) throws UnknownHostException

以 InetAddress#getByAddress(String,byte[]) 的确切方式创建 Inet6Address,但 IPv6 scope_id 设置为给定的数值。 不检查 scope_id 以确定它是否对应于系统上的任何接口。

参数:

参数名称参数描述
host指定的主机
addr网络字节顺序的原始 IP 地址
scope_id地址的数字 scope_id。

返回:

从原始 IP 地址创建的 Inet6Address 对象。

Throws:

Throw名称Throw描述
UnknownHostException如果 IP 地址的长度非法。

isMulticastAddress

public boolean isMulticastAddress()

检查 InetAddress 是否为 IP 多播地址的实用程序。 地址开头的 11111111 将该地址标识为多播地址。

覆盖:

类 InetAddress 中的 isMulticastAddress

返回:

一个布尔值,指示 InetAddress 是否为 IP 多播地址

isAnyLocalAddress

public boolean isAnyLocalAddress()

检查 InetAddress 是否在通配符地址中的实用程序。

覆盖:

类 InetAddress 中的 isAnyLocalAddress

返回:

一个布尔值,指示 Inetaddress 是否为通配符地址。

isLoopbackAddress

public boolean isLoopbackAddress()

检查 InetAddress 是否为环回地址的实用程序。

覆盖:

类 InetAddress 中的 isLoopbackAddress

返回:

一个布尔值,指示 InetAddress 是否为环回地址; 否则为假。

isLinkLocalAddress

public boolean isLinkLocalAddress()

检查 InetAddress 是否为链接本地地址的实用程序。

覆盖:

类 InetAddress 中的 isLinkLocalAddress

返回:

一个布尔值,指示 InetAddress 是否是链接本地地址; 如果地址不是链接本地单播地址,则为 false。

isSiteLocalAddress

public boolean isSiteLocalAddress()

检查 InetAddress 是否为站点本地地址的实用程序例程。

覆盖:

类 InetAddress 中的 isSiteLocalAddress

返回:

一个布尔值,指示 InetAddress 是否是站点本地地址; 如果地址不是站点本地单播地址,则为 false。

isMCGlobal

public boolean isMCGlobal()

检查多播地址是否具有全局范围的实用程序。

覆盖:

类 InetAddress 中的 isMCGlobal

返回:

一个布尔值,指示地址是否是全局范围的多播地址,如果不是全局范围或不是多播地址,则为 false

isMCNodeLocal

public boolean isMCNodeLocal()

检查多播地址是否具有节点范围的实用程序。

覆盖:

类 InetAddress 中的 isMCNodeLocal

返回:

一个布尔值,指示地址是否是节点本地范围的多播地址,如果它不是节点本地范围或不是多播地址,则为 false

isMCLinkLocal

public boolean isMCLinkLocal()

检查多播地址是否具有链接范围的实用程序。

覆盖:

类 InetAddress 中的 isMCLinkLocal

返回:

一个布尔值,指示地址是否是链路本地范围的多播地址,如果不是链路本地范围或不是多播地址,则为 false

isMCSiteLocal

public boolean isMCSiteLocal()

检查多播地址是否具有站点范围的实用程序。

覆盖:

类 InetAddress 中的 isMCSiteLocal

返回:

一个布尔值,指示地址是否是站点本地范围的多播地址,如果它不是站点本地范围或不是多播地址,则为 false

isMCOrgLocal

public boolean isMCOrgLocal()

检查多播地址是否具有组织范围的实用程序。

覆盖:

类 InetAddress 中的 isMCOrgLocal

返回:

一个布尔值,指示地址是否是组织本地范围的多播地址,如果它不是组织本地范围或不是多播地址,则为 false

getAddress

public byte[] getAddress()

返回此 InetAddress 对象的原始 IP 地址。 结果按网络字节顺序排列:地址的最高字节在 getAddress()[0] 中。

覆盖:

类 InetAddress 中的 getAddress

返回:

此对象的原始 IP 地址。

getScopeId

public int getScopeId()

如果此实例与接口关联,则返回数字 scopeId。 如果没有设置 scoped_id,则返回值为零。

返回:

scopeId,如果未设置,则为零。

getScopedInterface

public NetworkInterface getScopedInterface()

如果此实例是使用作用域接口创建的,则返回作用域接口。

返回:

作用域接口,如果未设置,则为 null。

getHostAddress

public String getHostAddress()

以文本形式返回 IP 地址字符串。 如果创建实例时指定了范围标识符,则范围 id 将附加到 IP 地址前面,并以“%”(百分比)字符开头。 这可以是数值或字符串,具体取决于用于创建实例的类型。

覆盖:

类 InetAddress 中的 getHostAddress

返回:

字符串格式的原始 IP 地址。

hashCode

public int hashCode()

返回此 IP 地址的哈希码。

覆盖:

InetAddress 类中的 hashCode

返回:

此 IP 地址的哈希码值。

equals

public boolean equals(Object obj)

将此对象与指定对象进行比较。 当且仅当参数不为 null 并且它表示与此对象相同的 IP 地址时,结果才为真。

如果 getAddress 返回的字节数组的长度对于两者相同,并且每个数组组件对于字节数组都相同,则 InetAddress 的两个实例表示相同的 IP 地址。

覆盖:

等于类 InetAddress

参数:

参数名称参数描述
obj要比较的对象。

返回:

如果对象相同,则为 true; 否则为false。

isIPv4CompatibleAddress

public boolean isIPv4CompatibleAddress()

检查 InetAddress 是否为与 IPv4 兼容的 IPv6 地址的实用程序。

返回:

一个布尔值,指示 InetAddress 是否是与 IPv4 兼容的 IPv6 地址; 如果地址是 IPv4 地址,则为 false。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/181782.html<

(0)
管理的头像管理
上一篇2025-03-27 15:48
下一篇 2025-03-27 15:49

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

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