public final class Inet6Address extends InetAddress
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位的十六进制值,地址的位,而'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将返回整个表单,因为它与其他文本数据结合使用时是明确的。
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.
如上所述的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。
Modifier and Type | Method and Description |
---|---|
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组播地址的实用程序。
|
boolean |
isSiteLocalAddress()
检查InetAddress是否是站点本地地址的实用程序。
|
getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, isReachable, isReachable, toString
public static Inet6Address getByAddress(String host, byte[] addr, NetworkInterface nif) throws UnknownHostException
InetAddress.getByAddress(String,byte[])
不同之处在于将IPv6 scope_id设置为对应于在指定的地址类型的给定接口的值addr
。
如果给定的接口没有为给定的地址类型(例如link-local或site-local)分配一个数字scope_id,那么调用将失败,并显示UnknownHostException。
见here对IPv6的范围地址的描述。
host
- 指定的主机
addr
- 网络字节顺序中的原始IP地址
nif
- 这个地址必须关联的接口。
UnknownHostException
- 如果IP地址为非法长度,或者接口没有为给定地址类型分配数字scope_id。
public static Inet6Address getByAddress(String host, byte[] addr, int scope_id) throws UnknownHostException
InetAddress.getByAddress(String,byte[])
不同之处在于将IPv6 scope_id设置为给定数值。
不检查scope_id以确定它是否对应于系统上的任何接口。
见here对IPv6的范围地址的描述。
host
- 指定的主机
addr
- 网络字节顺序中的原始IP地址
scope_id
- 地址的数值scope_id。
UnknownHostException
- 如果IP地址是非法的长度。
public boolean isMulticastAddress()
isMulticastAddress
在
InetAddress
boolean
InetAddress是否是一个IP组播地址
public boolean isAnyLocalAddress()
isAnyLocalAddress
在
InetAddress
boolean
Inetaddress是否是通配符地址。
public boolean isLoopbackAddress()
isLoopbackAddress
在
InetAddress
boolean
InetAddress是否是一个环回地址;
否则为false。
public boolean isLinkLocalAddress()
isLinkLocalAddress
在类
InetAddress
boolean
InetAddress是否是链路本地地址;
如果地址不是链路本地单播地址,则为false。
public boolean isSiteLocalAddress()
isSiteLocalAddress
在
InetAddress
boolean
InetAddress是否是站点本地地址;
如果地址不是站点本地单播地址,则为false。
public boolean isMCGlobal()
isMCGlobal
在
InetAddress
boolean
指示地址是否是全局范围的多播地址,如果不是全局范围,则为false,或者不是多播地址
public boolean isMCNodeLocal()
isMCNodeLocal
在
InetAddress
boolean
指示地址是否是节点本地作用域的多播地址,如果不是节点本地作用域,则为false,或者不是多播地址
public boolean isMCLinkLocal()
isMCLinkLocal
在
InetAddress
boolean
指示地址是否是链路本地范围的多播地址,如果不是链路本地作用域,或者它不是多播地址,则为false
public boolean isMCSiteLocal()
isMCSiteLocal
在
InetAddress
boolean
指示地址是否是站点本地范围的多播地址,如果不是站点本地范围,则为false,或者不是多播地址
public boolean isMCOrgLocal()
isMCOrgLocal
在
InetAddress
boolean
指示地址是否是组织本地作用域的组播地址,如果不是组织本地作用域,或者它不是组播地址,则为false
public byte[] getAddress()
InetAddress
对象的原始IP地址。
结果是网络字节顺序:地址的最高位字节在getAddress()[0]
。
getAddress
在
InetAddress
public int getScopeId()
public NetworkInterface getScopedInterface()
public String getHostAddress()
getHostAddress
在
InetAddress
public int hashCode()
hashCode
在
InetAddress
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean equals(Object obj)
true
当且仅当参数不是null
并且它代表与该对象相同的IP地址。
InetAddress的InetAddress
实例表示相同的IP地址,如果由getAddress
返回的字节数组的长度相同,并且每个数组组件对于字节数组是相同的。
equals
在
InetAddress
obj
- 要比较的对象。
true
如果对象相同;
false
否则。
InetAddress.getAddress()
public boolean isIPv4CompatibleAddress()
boolean
InetAddress是否是IPv4兼容的IPv6地址;
如果地址是IPv4地址,则为false。