Most visited

Recently visited

Added in API level 1

Inet6Address

public final class Inet6Address
extends InetAddress

java.lang.Object
   ↳ java.net.InetAddress
     ↳ java.net.Inet6Address


该类表示Internet协议版本6(IPv6)地址。 RFC 2373: IP Version 6 Addressing Architecture定义。

Textual representation of IP addresses

Textual representation of IPv6 address used as input to methods takes one of the following forms:
  1. The preferred form是x:x:x:x:x:x:x:x,其中'x'是地址的8个16位段的十六进制值。 这是完整的形式。 例如,

    1080:0:0:0:8:800:200C:417A

    请注意,不需要在个别字段中写入前导零。 但是,除了下面描述的以外,每个字段中必须至少有一个数字。

  2. 由于某些分配某些样式的IPv6地址的方法,地址通常包含长零字符串。 为了使包含零位的写入地址更容易,可以使用特殊的语法来压缩零。 使用“::”表示多组16位零。 “::”只能在地址中出现一次。 “::”也可用于压缩地址中的前导和/或尾随零。 例如,

    1080::8:800:200C:417A
  3. 处理IPv4和IPv6节点的混合环境时,有时更方便的替代形式是x:x:x:x:x:x:dddd,其中'x'是六个高阶16位元组的十六进制值, bit地址,而'd'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将返回完整格式,因为与其他文本数据结合使用时,它是明确的。

Special IPv6 address

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.

在InetAddress和Inet6Address中,它用于内部表示; 它没有功能的作用。 Java永远不会返回IPv4映射地址。 这些类可以采用IPv4映射地址作为输入,不管是字节数组还是文本表示。 但是,它将被转换为IPv4地址。

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是指本地系统上的一个接口,可以通过两种方式指定。

  1. As a numeric identifier. This must be a positive integer that identifies the particular interface and scope as understood by the system. Usually, the numeric values can be determined through administration tools on the system. Each interface may have multiple values, one for each scope. If the scope is unspecified, then the default value used is zero.
  2. As a string. This must be the exact string that is returned by getName() for the particular interface in question. When an Inet6Address is created in this way, the numeric scope-id is determined at the time the object is created by querying the relevant NetworkInterface.

还请注意,可以从NetworkInterface类返回的Inet6Address实例中检索数字scope_id 这可以用来找出系统上配置的当前范围ID。

Summary

Public methods

boolean equals(Object obj)

将此对象与指定的对象进行比较。

byte[] getAddress()

返回此 InetAddress对象的原始IP地址。

static Inet6Address getByAddress(String host, byte[] addr, int scope_id)

在的确切方式创建Inet6Address, getByAddress(String, byte[])不同之处在于将IPv6 scope_id设置为给定数值。

static Inet6Address getByAddress(String host, byte[] addr, NetworkInterface nif)

在的确切方式创建Inet6Address, getByAddress(String, byte[])不同之处在于将IPv6 scope_id设置为对应于在指定的地址类型的给定接口的值 addr

String getHostAddress()

以文本显示形式返回IP地址字符串。

int getScopeId()

如果此实例与接口关联,则返回数字scopeId。

NetworkInterface getScopedInterface()

如果使用范围界面创建此实例,则返回范围界面。

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是否为站点本地地址的实用程序。

Inherited methods

From class java.net.InetAddress
From class java.lang.Object

Public methods

equals

Added in API level 1
boolean equals (Object obj)

将此对象与指定的对象进行比较。 当且仅当参数不是null并且它表示与此对象相同的IP地址时,结果为true

如果 getAddress返回的字节数组的长度与两个字节数组的长度相同,并且每个数组组件的字节数组的长度相同,则 InetAddress两个实例表示相同的IP地址。

Parameters
obj Object: the object to compare against.
Returns
boolean true if the objects are the same; false otherwise.

也可以看看:

getAddress

Added in API level 1
byte[] getAddress ()

返回此InetAddress对象的原始IP地址。 结果是网络字节顺序:地址的最高位字节在getAddress()[0]

Returns
byte[] the raw IP address of this object.

getByAddress

Added in API level 1
Inet6Address getByAddress (String host, 
                byte[] addr, 
                int scope_id)

在的确切方式创建Inet6Address, getByAddress(String, byte[])不同之处在于将IPv6 scope_id设置为给定数值。 scope_id不被检查以确定它是否对应于系统上的任何接口。 有关IPv6作用域地址的描述,请参阅here

Parameters
host String: the specified host
addr byte: the raw IP address in network byte order
scope_id int: the numeric scope_id for the address.
Returns
Inet6Address an Inet6Address object created from the raw IP address.
Throws
UnknownHostException if IP address is of illegal length.

getByAddress

Added in API level 1
Inet6Address getByAddress (String host, 
                byte[] addr, 
                NetworkInterface nif)

在的确切方式创建Inet6Address, getByAddress(String, byte[])不同之处在于将IPv6 scope_id设置为对应于在指定的地址类型的给定接口的值addr 如果给定的接口没有为给定的地址类型分配一个数字scope_id(例如link-local或site-local),则该调用将会失败并显示UnknownHostException。 有关IPv6作用域地址的描述,请参阅here

Parameters
host String: the specified host
addr byte: the raw IP address in network byte order
nif NetworkInterface: an interface this address must be associated with.
Returns
Inet6Address an Inet6Address object created from the raw IP address.
Throws
UnknownHostException if IP address is of illegal length, or if the interface does not have a numeric scope_id assigned for the given address type.

getHostAddress

Added in API level 1
String getHostAddress ()

以文本显示形式返回IP地址字符串。 如果创建实例的时候指定了一个范围标识符,那么作用域标识符被附加到以“%”(百分号)字符开头的IP地址上。 这可以是数字值或字符串,具体取决于用于创建实例的内容。

Returns
String the raw IP address in a string format.

getScopeId

Added in API level 1
int getScopeId ()

如果此实例与接口关联,则返回数字scopeId。 如果未设置scoped_id,则返回值为零。

Returns
int the scopeId, or zero if not set.

getScopedInterface

Added in API level 1
NetworkInterface getScopedInterface ()

如果使用范围界面创建此实例,则返回范围界面。

Returns
NetworkInterface the scoped interface, or null if not set.

hashCode

Added in API level 1
int hashCode ()

返回此IP地址的哈希码。

Returns
int a hash code value for this IP address.

isAnyLocalAddress

Added in API level 1
boolean isAnyLocalAddress ()

用于检查通配符地址中的InetAddress的实用程序。

Returns
boolean a boolean indicating if the Inetaddress is a wildcard address.

isIPv4CompatibleAddress

Added in API level 1
boolean isIPv4CompatibleAddress ()

检查InetAddress是否与IPv4兼容的IPv6地址的实用程序。

Returns
boolean a boolean indicating if the InetAddress is an IPv4 compatible IPv6 address; or false if address is IPv4 address.

isLinkLocalAddress

Added in API level 1
boolean isLinkLocalAddress ()

用于检查InetAddress是否为链接本地地址的实用程序。

Returns
boolean a boolean indicating if the InetAddress is a link local address; or false if address is not a link local unicast address.

isLoopbackAddress

Added in API level 1
boolean isLoopbackAddress ()

检查InetAddress是否为环回地址的实用程序。

Returns
boolean a boolean indicating if the InetAddress is a loopback address; or false otherwise.

isMCGlobal

Added in API level 1
boolean isMCGlobal ()

检查多播地址是否具有全局范围的实用程序。

Returns
boolean a boolean indicating if the address has is a multicast address of global scope, false if it is not of global scope or it is not a multicast address

isMCLinkLocal

Added in API level 1
boolean isMCLinkLocal ()

检查多播地址是否具有链接范围的实用程序。

Returns
boolean a boolean indicating if the address has is a multicast address of link-local scope, false if it is not of link-local scope or it is not a multicast address

isMCNodeLocal

Added in API level 1
boolean isMCNodeLocal ()

检查组播地址是否具有节点范围的实用程序。

Returns
boolean a boolean indicating if the address has is a multicast address of node-local scope, false if it is not of node-local scope or it is not a multicast address

isMCOrgLocal

Added in API level 1
boolean isMCOrgLocal ()

检查组播地址是否具有组织范围的实用程序。

Returns
boolean a boolean indicating if the address has is a multicast address of organization-local scope, false if it is not of organization-local scope or it is not a multicast address

isMCSiteLocal

Added in API level 1
boolean isMCSiteLocal ()

检查组播地址是否具有站点范围的实用程序。

Returns
boolean a boolean indicating if the address has is a multicast address of site-local scope, false if it is not of site-local scope or it is not a multicast address

isMulticastAddress

Added in API level 1
boolean isMulticastAddress ()

检查InetAddress是否为IP多播地址的实用程序。 11111111在地址的开始处标识地址为多播地址。

Returns
boolean a boolean indicating if the InetAddress is an IP multicast address

isSiteLocalAddress

Added in API level 1
boolean isSiteLocalAddress ()

检查InetAddress是否为站点本地地址的实用程序。

Returns
boolean a boolean indicating if the InetAddress is a site local address; or false if address is not a site local unicast address.

Hooray!