- 所有已实现的接口:
Serializable
IP 地址的文本表示
用作方法输入的 IPv6 地址的文本表示采用以下形式之一:首选形式 是 x:x:x:x:x:x:x:x,其中“x”是地址的八个 16 位部分的十六进制值。这是完整的表格。例如,
1080:0:0:0:8:800:200C:417A
请注意,没有必要在单个字段中写入前导零。但是,每个字段中必须至少有一个数字,但下述情况除外。
由于某些分配特定样式 IPv6 地址的方法,地址通常包含一长串零位。为了更容易地写入包含零位的地址,可以使用一种特殊的语法来压缩零位。 “::”的使用表示多组 16 位零。 “::”在一个地址中只能出现一次。 “::”也可用于压缩地址中的前导和/或尾随零。例如,
1080::8:800:200C:417A
在处理 IPv4 和 IPv6 节点的混合环境时,有时更方便的替代形式是 x:x:x:x:x:x:dddd,其中“x”是六个高阶 16-地址的位段,'d'是标准IPv4表示地址的四个低位8位段的十进制值,例如,
::FFFF:129.144.52.38::129.144.52.38
其中“::FFFF:dddd”和“::dddd”分别是 IPv4 映射的 IPv6 地址和 IPv4 兼容的 IPv6 地址的一般形式。请注意,IPv4 部分必须采用“dddd”形式。以下表格无效:
::FFFF:d.d.d::FFFF:d.d::d.d.d::d.d
如下形式:
::FFFF:d
是有效的,但它是 IPv4 兼容 IPv6 地址的非常规表示,
::255.255.0.d
而“::d”对应于通用 IPv6 地址“0:0:0:0:0:0:0:d”。
对于返回文本表示形式作为输出值的方法,使用完整形式。 Inet6Address 将返回完整形式,因为它在与其他文本数据结合使用时是明确的。
特殊 IPv6 地址
- IPv4 映射地址
- 该 IPv6 地址的形式为 ::ffff:wxyz,用于表示 IPv4 地址。它允许本机程序在与 IPv4 和 IPv6 节点通信时使用相同的地址数据结构和相同的套接字。
在InetAddress和Inet6Address中,用于内部表示;它没有功能性作用。 Java 永远不会返回 IPv4 映射地址。这些类可以采用字节数组和文本表示形式的 IPv4 映射地址作为输入。但是,它将被转换为 IPv4 地址。
IPv6 范围地址的文本表示
可以扩展上述 IPv6 地址的文本表示以指定 IPv6 范围地址。 [draft-ietf-ipngwg-scoping-arch-04.txt] 中描述了对基本寻址架构的扩展。
因为链路本地和站点本地地址是非全局的,所以不同的主机可能具有相同的目标地址,并且可以通过同一原始系统上的不同接口访问。在这种情况下,据说始发系统连接到同一范围的多个区域。为了区分哪个是预期的目标区域,可以附加一个区域标识符(或scope_id) 到 IPv6 地址。
指定的一般格式scope_id是以下内容:
IPv6地址%scope_id
如上所述,IPv6 地址是文字 IPv6 地址。这scope_id指的是本地系统上的接口,可以通过两种方式指定。
- 作为数字标识符。这必须是一个正整数,用于标识系统所理解的特定接口和范围。通常,可以通过系统上的管理工具确定数值。每个接口可能有多个值,每个值对应一个范围。如果未指定范围,则使用的默认值为零。
- 作为一个字符串。这必须是
NetworkInterface.getName()为所讨论的特定接口返回的确切字符串。当以这种方式创建 Inet6Address 时,数字范围 ID 是在通过查询相关网络接口创建对象时确定的。
另请注意,数字scope_id可以从 NetworkInterface 类返回的 Inet6Address 实例中检索。这可用于找出系统上配置的当前作用域 ID。
- 自从:
- 1.4
- 参见:
-
方法总结
修饰符和类型方法描述boolean将此对象与指定对象进行比较。byte[]返回此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中指定的地址类型的给定接口对应的值。以文本形式返回 IP 地址字符串。如果此实例是使用作用域接口创建的,则返回作用域接口。int如果此实例与接口关联,则返回数字 scopeId。inthashCode()返回此 IP 地址的哈希码。boolean检查 InetAddress 是否为通配符地址的实用例程。boolean用于检查 InetAddress 是否为 IPv4 兼容 IPv6 地址的实用例程。boolean用于检查 InetAddress 是否为链接本地地址的实用例程。boolean检查 InetAddress 是否为环回地址的实用例程。boolean检查多播地址是否具有全局范围的实用例程。boolean用于检查多播地址是否具有链接范围的实用例程。boolean检查多播地址是否具有节点范围的实用例程。boolean检查多播地址是否具有组织范围的实用例程。boolean检查多播地址是否具有站点范围的实用例程。boolean检查 InetAddress 是否为 IP 多播地址的实用例程。地址开头的 11111111 将地址标识为多播地址。boolean检查 InetAddress 是否为站点本地地址的实用例程。在类 java.net.InetAddress 中声明的方法
getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, isReachable, isReachable, toString
-
方法详情
-
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。有关 IPv6 范围地址的说明,请参阅 这里。- 参数:
host- 指定主机addr- 网络字节顺序的原始 IP 地址nif- 此地址必须关联的接口。- 返回:
- 从原始 IP 地址创建的 Inet6Address 对象。
- 抛出:
UnknownHostException- 如果 IP 地址长度非法,或者接口没有为给定地址类型分配数字 scope_id。- 自从:
- 1.5
-
getByAddress
public static Inet6Address getByAddress(String host, byte[] addr, int scope_id) throws UnknownHostException 以与InetAddress.getByAddress(String,byte[])完全相同的方式创建一个 Inet6Address,只是将 IPv6 scope_id 设置为给定的数值。不检查 scope_id 以确定它是否对应于系统上的任何接口。有关 IPv6 范围地址的说明,请参阅 这里。- 参数:
host- 指定主机addr- 网络字节顺序的原始 IP 地址scope_id- 地址的数字 scope_id。- 返回:
- 从原始 IP 地址创建的 Inet6Address 对象。
- 抛出:
UnknownHostException- 如果 IP 地址的长度非法。- 自从:
- 1.5
-
isMulticastAddress
public boolean isMulticastAddress()检查 InetAddress 是否为 IP 多播地址的实用例程。地址开头的 11111111 将地址标识为多播地址。- 重写:
isMulticastAddress在类InetAddress中- 返回:
boolean指示 InetAddress 是否为 IP 多播地址
-
isAnyLocalAddress
public boolean isAnyLocalAddress()检查 InetAddress 是否为通配符地址的实用例程。- 重写:
isAnyLocalAddress在类InetAddress中- 返回:
boolean指示 InetAddress 是否为通配符地址。
-
isLoopbackAddress
public boolean isLoopbackAddress()检查 InetAddress 是否为环回地址的实用例程。- 重写:
isLoopbackAddress在类InetAddress中- 返回:
boolean指示 InetAddress 是否为环回地址;否则为假。
-
isLinkLocalAddress
public boolean isLinkLocalAddress()用于检查 InetAddress 是否为链接本地地址的实用例程。- 重写:
isLinkLocalAddress在类InetAddress中- 返回:
boolean指示 InetAddress 是否为链接本地地址;如果地址不是链接本地单播地址,则为 false。
-
isSiteLocalAddress
public boolean isSiteLocalAddress()检查 InetAddress 是否为站点本地地址的实用例程。- 重写:
isSiteLocalAddress在类InetAddress中- 返回:
boolean指示 InetAddress 是否为站点本地地址;如果地址不是站点本地单播地址,则为 false。
-
isMCGlobal
public boolean isMCGlobal()检查多播地址是否具有全局范围的实用例程。- 重写:
isMCGlobal在类InetAddress中- 返回:
-
a
boolean指示地址是否为全局范围的多播地址,如果不是全局范围或不是多播地址则为 false
-
isMCNodeLocal
public boolean isMCNodeLocal()检查多播地址是否具有节点范围的实用例程。- 重写:
isMCNodeLocal在类InetAddress中- 返回:
-
a
boolean指示地址是否是节点本地范围的多播地址,如果它不是节点本地范围或不是多播地址则为 false
-
isMCLinkLocal
public boolean isMCLinkLocal()用于检查多播地址是否具有链接范围的实用例程。- 重写:
isMCLinkLocal在类InetAddress中- 返回:
-
a
boolean指示地址是否是链路本地范围的多播地址,如果它不是链路本地范围或不是多播地址则为 false
-
isMCSiteLocal
public boolean isMCSiteLocal()检查多播地址是否具有站点范围的实用例程。- 重写:
isMCSiteLocal在类InetAddress中- 返回:
boolean指示地址是否是站点本地范围的多播地址,如果它不是站点本地范围或不是多播地址,则为 false
-
isMCOrgLocal
public boolean isMCOrgLocal()检查多播地址是否具有组织范围的实用例程。- 重写:
isMCOrgLocal在类InetAddress中- 返回:
boolean指示地址是否是组织本地范围的多播地址,如果它不是组织本地范围或不是多播地址,则为 false
-
getAddress
public byte[] getAddress()返回此InetAddress对象的原始 IP 地址。结果按网络字节顺序排列:地址的最高位字节在getAddress()[0]中。- 重写:
getAddress在类InetAddress中- 返回:
- 此对象的原始 IP 地址。
-
getScopeId
public int getScopeId()如果此实例与接口关联,则返回数字 scopeId。如果未设置 scoped_id,则返回值为零。- 返回:
- scopeId,如果未设置则为零。
- 自从:
- 1.5
-
getScopedInterface
如果此实例是使用作用域接口创建的,则返回作用域接口。- 返回:
- 作用域接口,如果未设置则为 null。
- 自从:
- 1.5
-
getHostAddress
以文本形式返回 IP 地址字符串。如果创建实例时指定了范围标识符,则范围 ID 将附加到 IP 地址,并以“%”(百分号)字符开头。这可以是数值或字符串,具体取决于用于创建实例的内容。- 重写:
getHostAddress在类InetAddress中- 返回:
- 字符串格式的原始 IP 地址。
-
hashCode
public int hashCode()返回此 IP 地址的哈希码。- 重写:
hashCode在类InetAddress中- 返回:
- 此 IP 地址的哈希码值。
- 参见:
-
equals
将此对象与指定对象进行比较。结果是true当且仅当参数不是null并且它表示与此对象相同的 IP 地址。如果
getAddress返回的字节数组的长度对于两个实例都相同,并且字节数组的每个数组组件都相同,则InetAddress的两个实例表示相同的 IP 地址。- 重写:
equals在类InetAddress中- 参数:
obj- 要比较的对象。- 返回:
true如果对象相同;false否则。- 参见:
-
isIPv4CompatibleAddress
public boolean isIPv4CompatibleAddress()用于检查 InetAddress 是否为 IPv4 兼容 IPv6 地址的实用例程。- 返回:
boolean指示 InetAddress 是否是 IPv4 兼容的 IPv6 地址;如果地址是 IPv4 地址,则为 false。
-