JavaTM 2 Platform
Standard Ed. 6

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 位址的文本表示形式採取以下形式之一:
  1. 首選形式為 x:x:x:x:x:x:x:x,其中這些 'x' 是八個 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: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 節點通信時,它允許本機程序使用相同的位址資料結構和相同的Socket。

在 InetAddress 和 Inet6Address 中,它用於內部表示形式;沒有任何功能職責。Java 永遠不返回映射 IPv4 的位址。這些類別可以使用映射 IPv4 的位址,作為 byte 陣列和文本表示形式的輸入。但是,它將被轉換為 IPv4 位址。

IPv6 範圍位址的文本表示形式

可以擴展上述 IPv6 位址的文本表示形式來指定 IPv6 範圍的位址。在 [draft-ietf-ipngwg-scoping-arch-04.txt] 中描述了這種對基本位址體系結構的擴展。

因為連接本地和站點本地位址都是非全球的,所以不同的主機可能具有相同的目標位址並且可能通過相同始發系統上的不同介面到達。在此情況下,視為將始發系統連接到同一範圍的多個時區。為了確定哪一個才是真正意義上的目標時區,可以將時區標識符(或 scope_id)添加到 IPv6 位址上。

指定 scope_id 的一般格式如下所示:

IPv6-address%scope_id

IPv6 位址就是上述文字值 IPv6 位址。scope_id 指的是本地系統上的介面,它可以使用兩種方式指定。

  1. 作為數字標識符。 它必須是一個系統理解的指定特定介面和範圍的正整數。通常,可以通過系統上的管理工具確定這些數字值。每個介面可能具有多個值,每個範圍一個。如果沒有指定範圍,則使用的預設值為零。
  2. 作為字元串。 它必須是相關特定介面的 NetworkInterface.getName() 所返回的確切字元串。如果以此方式創建 Inet6Address,則數字 scope-id 在創建該物件時通過查詢相關 NetworkInterface 來確定。

另外注意,可以從 NetworkInterface 類別返回的 Inet6Address 實例獲取數字 scope_id。這一點可用於找出在系統上配置的當前範圍 id。

從以下版本開始:
1.4
另請參見:
序列化表格

方法摘要
 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

isMCGlobal

public boolean isMCGlobal()
檢查多點傳送位址是否具有全球範圍的實用例行程序。

覆寫:
類別 InetAddress 中的 isMCGlobal
返回:
指示位址是否是全球範圍多點傳送位址的 boolean 值;如果它不是全球範圍或多點傳送位址,則返回 false
從以下版本開始:
1.4

isMCNodeLocal

public boolean isMCNodeLocal()
檢查多點傳送位址是否具有節點範圍的實用例行程序。

覆寫:
類別 InetAddress 中的 isMCNodeLocal
返回:
指示位址是否是節點本地範圍多點傳送位址的 boolean 值;如果它不是節點本地範圍或多點傳送位址,則返回 false
從以下版本開始:
1.4

isMCLinkLocal

public boolean isMCLinkLocal()
檢查多點傳送位址是否具有連接範圍的實用例行程序。

覆寫:
類別 InetAddress 中的 isMCLinkLocal
返回:
指示位址是否是連接本地範圍多點傳送位址的 boolean 值;如果它不是連接本地範圍或多點傳送位址,則返回 false
從以下版本開始:
1.4

isMCSiteLocal

public boolean isMCSiteLocal()
檢查多點傳送位址是否具有站點範圍的實用例行程序。

覆寫:
類別 InetAddress 中的 isMCSiteLocal
返回:
指示位址是否是站點本地範圍多點傳送位址的 boolean 值;如果它不是站點本地範圍或多點傳送位址,則返回 false
從以下版本開始:
1.4

isMCOrgLocal

public boolean isMCOrgLocal()
檢查多點傳送位址是否具有組織範圍的實用例行程序。

覆寫:
類別 InetAddress 中的 isMCOrgLocal
返回:
指示位址是否是組織本地範圍多點傳送位址的 boolean 值;如果它不是組織本地範圍或多點傳送位址,則返回 false
從以下版本開始:
1.4

getAddress

public byte[] getAddress()
返回此 InetAddress 物件的原始 IP 位址。結果按網路位元組順序:位址的高位位元組位於 getAddress()[0] 中。

覆寫:
類別 InetAddress 中的 getAddress
返回:
此物件的原始 IP 位址。

getScopeId

public int getScopeId()
如果此實例與介面關聯,則返回數字 scoped_id。如果沒有設置任何 scoped_id,則返回值為零。

返回:
scopeId;如果沒有設置,則返回零。
從以下版本開始:
1.5

getScopedInterface

public NetworkInterface getScopedInterface()
如果此實例是使用範圍介面創建的,則返回範圍介面。

返回:
範圍介面;如果沒有設置,則返回 null。
從以下版本開始:
1.5

getHostAddress

public String getHostAddress()
返回 IP 位址字元串(以文本表現形式)。如果創建的實例指定了範圍標識符,則將一個前帶 "%"(百分比)符號的範圍 id 添加到 IP 位址上。它可以是數字值,也可以是字元串,具體取決於創建實例使用的是哪一種。

覆寫:
類別 InetAddress 中的 getHostAddress
返回:
字元串格式的原始 IP 位址。

hashCode

public int hashCode()
返回此 IP 位址的雜湊碼。

覆寫:
類別 InetAddress 中的 hashCode
返回:
此 IP 位址的雜湊碼值。
另請參見:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
將此物件與指定物件比較。當且僅當參數不為 null,並且它表示與此物件相同的 IP 位址時,結果才為 true

如果 getAddress 對兩個 InetAddress 返回的 byte 陣列長度相同並且 byte 陣列的每個陣列元素也都相同,則這兩個 InetAddress 的實例表示相同的 IP 位址。

覆寫:
類別 InetAddress 中的 equals
參數:
obj - 要與之比較的物件。
返回:
如果物件相同,則返回 true;否則,返回 false
另請參見:
InetAddress.getAddress()

isIPv4CompatibleAddress

public boolean isIPv4CompatibleAddress()
檢查 InetAddress 是否是與 IPv4 相容的 IPv6 位址的實用例行程序。

返回:
指示 InetAddress 是否是與 IPv4 相容的 IPv6 位址的 boolean 值;如果位址為 IPv4 位址,則返回 false。
從以下版本開始:
1.4

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only