- java.lang.Object
-
- java.net.InetAddress
-
- java.net.Inet6Address
-
- 实现的所有接口
-
Serializable
public final class Inet6Address extends InetAddress
此类表示Internet协议版本6(IPv6)地址。 定义: RFC 2373: IP Version 6 Addressing Architecture 。Textual representation of IP addresses
用作方法输入的IPv6地址的文本表示采用以下形式之一:The preferred form是x:x:x:x:x:x:x:x,其中'x'是地址的8个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的十六进制值 - 地址的位片段,'s'是标准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-mapped address Of the form ::ffff:w.x.y.z, this IPv6 address is used to represent an IPv4 address. It allows the native program to use the same address data structure and also the same socket when communicating with both IPv4 and IPv6 nodes. In InetAddress and Inet6Address, it is used for internal representation; it has no functional role. Java will never return an IPv4-mapped address. These classes can take an IPv4-mapped address as input, both in byte array and text representation. However, it will be converted into an IPv4 address.
Textual representation of IPv6 scoped addresses
可以扩展如上所述的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时,通过查询相关的NetworkInterface在创建对象时确定数字scope-id。
另请注意,可以从NetworkInterface类返回的Inet6Address实例中检索数字scope_id 。 这可用于查找系统上配置的当前范围ID。
- 从以下版本开始:
- 1.4
- 另请参见:
- Serialized Form
-
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 boolean
equals(Object obj)
将此对象与指定的对象进行比较。byte[]
getAddress()
返回此InetAddress
对象的原始IP地址。static Inet6Address
getByAddress(String host, byte[] addr, int scope_id)
在的确切方式创建Inet6Address,InetAddress.getByAddress(String,byte[])
不同之处在于将IPv6 scope_id设置为给定数值。static Inet6Address
getByAddress(String host, byte[] addr, NetworkInterface nif)
在的确切方式创建Inet6Address,InetAddress.getByAddress(String,byte[])
不同之处在于将IPv6 scope_id设置为对应于在指定的地址类型的给定接口的值addr
。String
getHostAddress()
返回文本表示中的IP地址字符串。NetworkInterface
getScopedInterface()
如果此实例是使用作用域接口创建的,则返回作用域接口。int
getScopeId()
如果此实例与接口关联,则返回数字scopeId。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多播地址的实用程序例程。 地址开头的11111111将地址标识为多播地址。boolean
isSiteLocalAddress()
用于检查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
在的确切方式创建Inet6Address,InetAddress.getByAddress(String,byte[])
不同之处在于将IPv6 scope_id设置为对应于在指定的地址类型的给定接口的值addr
。 如果给定接口没有为给定地址类型分配数字scope_id(例如,link-local或site-local),则调用将失败并显示UnknownHostException。 有关IPv6作用域地址的说明,请参见here 。- 参数
-
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
在的确切方式创建Inet6Address,InetAddress.getByAddress(String,byte[])
不同之处在于将IPv6 scope_id设置为给定数值。 不检查scope_id以确定它是否对应于系统上的任何接口。 有关IPv6作用域地址的说明,请参见here 。- 参数
-
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
- 结果
-
a
boolean
指示Inetaddress是否为通配符地址。
-
isLoopbackAddress
public boolean isLoopbackAddress()
用于检查InetAddress是否为环回地址的实用例程。- 重写:
-
isLoopbackAddress
在类InetAddress
- 结果
-
a
boolean
指示InetAddress是否为环回地址; 否则为假。
-
isLinkLocalAddress
public boolean isLinkLocalAddress()
用于检查InetAddress是否为链接本地地址的实用程序例程。- 重写:
-
isLinkLocalAddress
在类InetAddress
- 结果
-
a
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
- 结果
-
boolean
指示地址是否是链路本地范围的多播地址,如果它不是链路本地范围或者不是多播地址,则为false
-
isMCSiteLocal
public boolean isMCSiteLocal()
用于检查多播地址是否具有站点范围的实用程序例程。- 重写:
-
isMCSiteLocal
在类InetAddress
- 结果
-
boolean
指示地址是否是站点本地作用域的多播地址,如果不是站点本地作用域或不是多播地址,则为false
-
isMCOrgLocal
public boolean isMCOrgLocal()
用于检查多播地址是否具有组织范围的实用例程。- 重写:
-
isMCOrgLocal
在类InetAddress
- 结果
-
a
boolean
指示地址是否为组织本地范围的组播地址,如果不是组织本地范围或不是组播地址,则为false
-
getAddress
public byte[] getAddress()
返回此InetAddress
对象的原始IP地址。 结果是网络字节顺序:地址的最高位字节在getAddress()[0]
。- 重写:
-
getAddress
类InetAddress
- 结果
- 此对象的原始IP地址。
-
getScopeId
public int getScopeId()
如果此实例与接口关联,则返回数字scopeId。 如果未设置scoped_id,则返回值为零。- 结果
- scopeId,如果没有设置则为零。
- 从以下版本开始:
- 1.5
-
getScopedInterface
public NetworkInterface getScopedInterface()
如果此实例是使用作用域接口创建的,则返回作用域接口。- 结果
- 作用域接口,如果未设置则为null。
- 从以下版本开始:
- 1.5
-
getHostAddress
public String getHostAddress()
返回文本表示中的IP地址字符串。 如果创建的实例指定了作用域标识符,则作用域ID将附加到前面带有“%”(百分号)字符的IP地址。 这可以是数值或字符串,具体取决于用于创建实例的值。- 重写:
-
getHostAddress
在类InetAddress
- 结果
- 字符串格式的原始IP地址。
-
hashCode
public int hashCode()
返回此IP地址的哈希码。- 重写:
-
hashCode
类InetAddress
- 结果
- 此IP地址的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
equals
public boolean equals(Object obj)
将此对象与指定的对象进行比较。 当且仅当参数不是null
并且它表示与此对象相同的IP地址时,结果为true
。如果
getAddress
返回的字节数组的长度对于两者都相同,则InetAddress
两个实例表示相同的IP地址,并且每个数组组件对于字节数组是相同的。- 重写:
-
equals
在类InetAddress
- 参数
-
obj
- 要比较的对象。 - 结果
-
true
如果对象相同; 否则为false
。 - 另请参见:
-
InetAddress.getAddress()
-
isIPv4CompatibleAddress
public boolean isIPv4CompatibleAddress()
用于检查InetAddress是否是IPv4兼容IPv6地址的实用程序例程。- 结果
-
a
boolean
指示InetAddress是否是IPv4兼容的IPv6地址; 如果地址是IPv4地址,则返回false。
-
-