|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.net
类 Inet6Address
java.lang.Object java.net.InetAddress java.net.Inet6Address
- 所有已实现的接口:
- Serializable
-
public final class Inet6Address
- extends InetAddress
此类表示互联网协议第 6 版 (IPv6) 地址。此类由 RFC 2373:IP Version 6 Addressing Architecture 定义。
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:d.d.d.d ,其中 'x' 为六个高位 16 位地址段的十六进制值,'d' 为四个低位 8 位标准 IPv4 表示形式地址段的十进制值,例如,
::FFFF:129.144.52.38 ::129.144.52.38 其中,"::FFFF:d.d.d.d" 和 "::d.d.d.d" 分别为映射 IPv4 的 IPv6 地址 (IPv4-mapped IPv6 address) 和与 IPv4 兼容的 IPv6 地址 (IPv4-compatible IPv6 address) 的一般形式。注意,IPv4 部分必须为 "d.d.d.d" 形式。以下形式是无效的:
::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 的地址 其形式为 ::ffff:w.x.y.z,此 IPv6 地址用于表示 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-address%scope_id
IPv6 地址就是上述字面值 IPv6 地址。scope_id 指的是本地系统上的接口,它可以使用两种方式指定。
- 作为数字标识符。 它必须是一个系统理解的指定特定接口和范围的正整数。通常,可以通过系统上的管理工具确定这些数字值。每个接口可能具有多个值,每个范围一个。如果没有指定范围,则使用的默认值为零。
- 作为字符串。 它必须是相关特定接口的
NetworkInterface.getName()
所返回的确切字符串。如果以此方式创建 Inet6Address,则数字 scope-id 在创建该对象时通过查询相关 NetworkInterface 来确定。
另外注意,可以从 NetworkInterface 类返回的 Inet6Address 实例检索数字 scope_id。这一点可用于找出在系统上配置的当前范围 id。
- 另请参见:
- 序列化表格
方法摘要 | |
---|---|
boolean |
equals(Object obj) 将此对象与指定对象比较。 |
byte[] |
getAddress() 返回此 InetAddress 对象的原始 IP 地址。 |
static Inet6Address |
getByAddress(String host, byte[] addr, int scope_id) 完全按照 InetAddress.getByAddress(String,byte[]) 的方式创建 Inet6Address,惟一的不同是将 IPv6 scope_id 设置为给定的数字值。 |
static Inet6Address |
getByAddress(String host, byte[] addr, NetworkInterface nif) 完全按照 InetAddress.getByAddress(String,byte[]) 的方式创建 Inet6Address,惟一的不同是将 IPv6 scope_id 设置为与在 addr 中指定地址类型的给定接口相对应的值。 |
String |
getHostAddress() 返回 IP 地址字符串(以文本表现形式)。 |
NetworkInterface |
getScopedInterface() 如果此实例是使用范围接口创建的,则返回范围接口。 |
int |
getScopeId() 如果此实例与接口关联,则返回数字 scoped_id。 |
int |
hashCode() 返回此 IP 地址的哈希码。 |
boolean |
isAnyLocalAddress() 检查 InetAddress 是否是通配符地址的实用例行程序。 |
boolean |
isIPv4CompatibleAddress() 检查 InetAddress 是否是与 IPv4 兼容的 IPv6 地址的实用例行程序。 |
boolean |
isLinkLocalAddress() 检查 InetAddress 是否是链接本地地址的实用例行程序。 |
boolean |
isLoopbackAddress() 检查 InetAddress 是否是回送地址中的实用例行程序。 |
boolean |
isMCGlobal() 检查多播地址是否具有全球范围的实用例行程序。 |
boolean |
isMCLinkLocal() 检查多播地址是否具有链接范围的实用例行程序。 |
boolean |
isMCNodeLocal() 检查多播地址是否具有节点范围的实用例行程序。 |
boolean |
isMCOrgLocal() 检查多播地址是否具有组织范围的实用例行程序。 |
boolean |
isMCSiteLocal() 检查多播地址是否具有站点范围的实用例行程序。 |
boolean |
isMulticastAddress() 检查 InetAddress 是否 IP 多播地址的实用例行程序。 |
boolean |
isSiteLocalAddress() 检查 InetAddress 是否是站点本地地址的实用例行程序。 |
从类 java.net.InetAddress 继承的方法 |
---|
getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, 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。有关 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 标识着该地址是一个多播地址。
-
- 覆盖:
-
类
InetAddress
中的isMulticastAddress
-
- 返回:
-
指示 InetAddress 是否是 IP 多播地址的
boolean
值 - 从以下版本开始:
- JDK1.1
isAnyLocalAddress
public boolean isAnyLocalAddress()
- 检查 InetAddress 是否是通配符地址的实用例行程序。
-
- 覆盖:
-
类
InetAddress
中的isAnyLocalAddress
-
- 返回:
-
指示 Inetaddress 是否是通配符地址的
boolean
值 - 从以下版本开始:
- 1.4
isLoopbackAddress
public boolean isLoopbackAddress()
- 检查 InetAddress 是否是回送地址中的实用例行程序。
-
- 覆盖:
-
类
InetAddress
中的isLoopbackAddress
-
- 返回:
-
指示 InetAddress 是否是回送地址的
boolean
值;否则返回 false。 - 从以下版本开始:
- 1.4
isLinkLocalAddress
public boolean isLinkLocalAddress()
- 检查 InetAddress 是否是链接本地地址的实用例行程序。
-
- 覆盖:
-
类
InetAddress
中的isLinkLocalAddress
-
- 返回:
-
指示 InetAddress 是否是本地链接地址的
boolean
值;如果地址不是链接本地单播地址,则返回 false。 - 从以下版本开始:
- 1.4
isSiteLocalAddress
public boolean isSiteLocalAddress()
- 检查 InetAddress 是否是站点本地地址的实用例行程序。
-
- 覆盖:
-
类
InetAddress
中的isSiteLocalAddress
-
- 返回:
-
指示 InetAddress 是否是站点本地地址的
boolean
值;如果地址不是站点本地单播地址,则返回 false。 - 从以下版本开始:
- 1.4