树叶云鸿蒙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

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

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