鴻蒙OS Inet6Address

2022-06-09 14:37 更新

Inet6Address

java.lang.Object

|---java.net.InetAddress

|---|---java.net.Inet6Address

public final class Inet6Address
extends InetAddress

此類表示 Internet 協(xié)議版本 6 (IPv6) 地址。 由 RFC 2373 定義:IP 版本 6 尋址體系結構。 IP 地址的文本表示用作方法輸入的 IPv6 地址的文本表示采用以下形式之一:

  1. 首選形式是 xxxx:x,其中 'x' 是地址的八個 16 位片段的十六進制值。這是完整的表格。例如,

請注意,不必在單個字段中寫入前導零。但是,每個字段中必須至少有一個數(shù)字,除非如下所述。

  1. 由于某些分配某些樣式的 IPv6 地址的方法,地址通常會包含長的零位字符串。為了使寫入包含零位的地址更容易,可以使用一種特殊的語法來壓縮零。使用“::”表示多組 16 位零。 “::”在一個地址中只能出現(xiàn)一次。 “::”也可用于壓縮地址中的前導和/或尾隨零。例如,

  1. 在處理 IPv4 和 IPv6 節(jié)點的混合環(huán)境時,有時更方便的另一種形式是 xxxd.d.d.d,其中 'x' 是六個高位 16 位的十六進制值地址片段,'d' 是標準 IPv4 表示地址的四個低位 8 位片段的十進制值,例如,

其中 "::FFFF:d.d.d.d" 和 "::d.d.d.d" 分別是 IPv4 映射的 IPv6 地址和 IPv4 兼容的 IPv6 地址的一般形式。請注意,IPv4 部分必須采用“d.d.d.d”形式。以下表格無效:

以下表格:

是有效的,但是它是與 IPv4 兼容的 IPv6 地址的非常規(guī)表示,

而“::d”對應于通用 IPv6 地址“0:0:0:0:0:0:0:d”。

對于將文本表示形式作為輸出值返回的方法,使用完整形式。 Inet6Address 將返回完整的形式,因為它在與其他文本數(shù)據(jù)結合使用時是明確的。

特殊 IPv6 地址

IPv6 范圍地址的文本表示

如上所述的 IPv6 地址的文本表示可以擴展為指定 IPv6 范圍的地址。 [draft-ietf-ipngwg-scoping-arch-04.txt] 中描述了對基本尋址架構的這種擴展。

因為鏈路本地地址和站點本地地址是非全局地址,所以不同的主機可能具有相同的目標地址,并且可以通過同一源系統(tǒng)上的不同接口訪問。在這種情況下,始發(fā)系統(tǒng)被稱為連接到同一范圍的多個區(qū)域。為了區(qū)分哪個是預期的目標區(qū)域,可以將區(qū)域標識符(或 scope_id)附加到 IPv6 地址。

指定 scope_id 的一般格式如下:

IPv6 地址%scope_id

IPv6 地址是如上所述的文字 IPv6 地址。 scope_id 指的是本地系統(tǒng)上的一個接口,它可以通過兩種方式指定。

  1. 作為數(shù)字標識符。 這必須是一個正整數(shù),用于標識系統(tǒng)理解的特定接口和范圍。 通常,數(shù)值可以通過系統(tǒng)上的管理工具來確定。 每個接口可能有多個值,每個范圍一個。 如果未指定范圍,則使用的默認值為零。
  2. 作為字符串。 這必須是 NetworkInterface.getName() 針對相關特定接口返回的確切字符串。 以這種方式創(chuàng)建 Inet6Address 時,通過查詢相關 NetworkInterface 在創(chuàng)建對象時確定數(shù)字范圍 ID。

另請注意,數(shù)字 scope_id 可以從 NetworkInterface 類返回的 Inet6Address 實例中檢索。 這可用于找出系統(tǒng)上配置的當前范圍 ID。

方法總結

修飾符和類型 方法 描述
boolean equals(Object obj) 將此對象與指定對象進行比較。
byte[] getAddress() 返回此 InetAddress 對象的原始 IP 地址。
static Inet6Address getByAddress(String host, byte[] addr, int scope_id) 以 InetAddress#getByAddress(String,byte[]) 的確切方式創(chuàng)建 Inet6Address,但 IPv6 scope_id 設置為給定的數(shù)值。
static Inet6Address getByAddress(String host, byte[] addr, NetworkInterface nif) 以 InetAddress#getByAddress(String,byte[]) 的確切方式創(chuàng)建 Inet6Address,除了 IPv6 scope_id 設置為與 addr 中指定的地址類型的給定接口對應的值。
String getHostAddress() 以文本形式返回 IP 地址字符串。
NetworkInterface getScopedInterface() 如果此實例是使用作用域接口創(chuàng)建的,則返回作用域接口。
int getScopeId() 如果此實例與接口關聯(lián),則返回數(shù)字 scopeId。
int hashCode() 返回此 IP 地址的哈希碼。
boolean isAnyLocalAddress() 檢查 InetAddress 是否在通配符地址中的實用程序。
boolean isIPv4CompatibleAddress() 檢查 InetAddress 是否為與 IPv4 兼容的 IPv6 地址的實用程序。
boolean isLinkLocalAddress() 檢查 InetAddress 是否為鏈接本地地址的實用程序。
boolean isLoopbackAddress() 檢查 InetAddress 是否為環(huán)回地址的實用程序。
boolean isMCGlobal() 檢查多播地址是否具有全局范圍的實用程序。
boolean isMCLinkLocal() 檢查多播地址是否具有鏈接范圍的實用程序。
boolean isMCNodeLocal() 檢查多播地址是否具有節(jié)點范圍的實用程序。
boolean isMCOrgLocal() 檢查多播地址是否具有組織范圍的實用程序。
boolean isMCSiteLocal() 檢查多播地址是否具有站點范圍的實用程序。
boolean isMulticastAddress() 檢查 InetAddress 是否為 IP 多播地址的實用程序。
boolean isSiteLocalAddress() 檢查 InetAddress 是否為站點本地地址的實用程序例程。
從類 java.net.InetAddress 繼承的方法
getAllByName, getByAddress, getByAddress, getByName, getCanonicalHostName, getHostName, getLocalHost, getLoopbackAddress, 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[]) 的確切方式創(chuàng)建 Inet6Address,除了 IPv6 scope_id 設置為與 addr 中指定的地址類型的給定接口對應的值。 如果給定接口沒有為給定地址類型(例如鏈接本地或站點本地)分配數(shù)字 scope_id,則調(diào)用將失敗并返回 UnknownHostException。

參數(shù):

參數(shù)名稱 參數(shù)描述
host 指定的主機
addr 網(wǎng)絡字節(jié)順序的原始 IP 地址
nif 此地址必須關聯(lián)的接口。

返回:

從原始 IP 地址創(chuàng)建的 Inet6Address 對象。

Throws:

Throw名稱 Throw描述
UnknownHostException 如果 IP 地址的長度非法,或者接口沒有為給定的地址類型分配數(shù)字 scope_id。

getByAddress

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

以 InetAddress#getByAddress(String,byte[]) 的確切方式創(chuàng)建 Inet6Address,但 IPv6 scope_id 設置為給定的數(shù)值。 不檢查 scope_id 以確定它是否對應于系統(tǒng)上的任何接口。

參數(shù):

參數(shù)名稱 參數(shù)描述
host 指定的主機
addr 網(wǎng)絡字節(jié)順序的原始 IP 地址
scope_id 地址的數(shù)字 scope_id。

返回:

從原始 IP 地址創(chuàng)建的 Inet6Address 對象。

Throws:

Throw名稱 Throw描述
UnknownHostException 如果 IP 地址的長度非法。

isMulticastAddress

public boolean isMulticastAddress()

檢查 InetAddress 是否為 IP 多播地址的實用程序。 地址開頭的 11111111 將該地址標識為多播地址。

覆蓋:

類 InetAddress 中的 isMulticastAddress

返回:

一個布爾值,指示 InetAddress 是否為 IP 多播地址

isAnyLocalAddress

public boolean isAnyLocalAddress()

檢查 InetAddress 是否在通配符地址中的實用程序。

覆蓋:

類 InetAddress 中的 isAnyLocalAddress

返回:

一個布爾值,指示 Inetaddress 是否為通配符地址。

isLoopbackAddress

public boolean isLoopbackAddress()

檢查 InetAddress 是否為環(huán)回地址的實用程序。

覆蓋:

類 InetAddress 中的 isLoopbackAddress

返回:

一個布爾值,指示 InetAddress 是否為環(huán)回地址; 否則為假。

isLinkLocalAddress

public boolean isLinkLocalAddress()

檢查 InetAddress 是否為鏈接本地地址的實用程序。

覆蓋:

類 InetAddress 中的 isLinkLocalAddress

返回:

一個布爾值,指示 InetAddress 是否是鏈接本地地址; 如果地址不是鏈接本地單播地址,則為 false。

isSiteLocalAddress

public boolean isSiteLocalAddress()

檢查 InetAddress 是否為站點本地地址的實用程序例程。

覆蓋:

類 InetAddress 中的 isSiteLocalAddress

返回:

一個布爾值,指示 InetAddress 是否是站點本地地址; 如果地址不是站點本地單播地址,則為 false。

isMCGlobal

public boolean isMCGlobal()

檢查多播地址是否具有全局范圍的實用程序。

覆蓋:

類 InetAddress 中的 isMCGlobal

返回:

一個布爾值,指示地址是否是全局范圍的多播地址,如果不是全局范圍或不是多播地址,則為 false

isMCNodeLocal

public boolean isMCNodeLocal()

檢查多播地址是否具有節(jié)點范圍的實用程序。

覆蓋:

類 InetAddress 中的 isMCNodeLocal

返回:

一個布爾值,指示地址是否是節(jié)點本地范圍的多播地址,如果它不是節(jié)點本地范圍或不是多播地址,則為 false

isMCLinkLocal

public boolean isMCLinkLocal()

檢查多播地址是否具有鏈接范圍的實用程序。

覆蓋:

類 InetAddress 中的 isMCLinkLocal

返回:

一個布爾值,指示地址是否是鏈路本地范圍的多播地址,如果不是鏈路本地范圍或不是多播地址,則為 false

isMCSiteLocal

public boolean isMCSiteLocal()

檢查多播地址是否具有站點范圍的實用程序。

覆蓋:

類 InetAddress 中的 isMCSiteLocal

返回:

一個布爾值,指示地址是否是站點本地范圍的多播地址,如果它不是站點本地范圍或不是多播地址,則為 false

isMCOrgLocal

public boolean isMCOrgLocal()

檢查多播地址是否具有組織范圍的實用程序。

覆蓋:

類 InetAddress 中的 isMCOrgLocal

返回:

一個布爾值,指示地址是否是組織本地范圍的多播地址,如果它不是組織本地范圍或不是多播地址,則為 false

getAddress

public byte[] getAddress()

返回此 InetAddress 對象的原始 IP 地址。 結果按網(wǎng)絡字節(jié)順序排列:地址的最高字節(jié)在 getAddress()[0] 中。

覆蓋:

類 InetAddress 中的 getAddress

返回:

此對象的原始 IP 地址。

getScopeId

public int getScopeId()

如果此實例與接口關聯(lián),則返回數(shù)字 scopeId。 如果沒有設置 scoped_id,則返回值為零。

返回:

scopeId,如果未設置,則為零。

getScopedInterface

public NetworkInterface getScopedInterface()

如果此實例是使用作用域接口創(chuàng)建的,則返回作用域接口。

返回:

作用域接口,如果未設置,則為 null。

getHostAddress

public String getHostAddress()

以文本形式返回 IP 地址字符串。 如果創(chuàng)建實例時指定了范圍標識符,則范圍 id 將附加到 IP 地址前面,并以“%”(百分比)字符開頭。 這可以是數(shù)值或字符串,具體取決于用于創(chuàng)建實例的類型。

覆蓋:

類 InetAddress 中的 getHostAddress

返回:

字符串格式的原始 IP 地址。

hashCode

public int hashCode()

返回此 IP 地址的哈希碼。

覆蓋:

InetAddress 類中的 hashCode

返回:

此 IP 地址的哈希碼值。

equals

public boolean equals(Object obj)

將此對象與指定對象進行比較。 當且僅當參數(shù)不為 null 并且它表示與此對象相同的 IP 地址時,結果才為真。

如果 getAddress 返回的字節(jié)數(shù)組的長度對于兩者相同,并且每個數(shù)組組件對于字節(jié)數(shù)組都相同,則 InetAddress 的兩個實例表示相同的 IP 地址。

覆蓋:

等于類 InetAddress

參數(shù):

參數(shù)名稱 參數(shù)描述
obj 要比較的對象。

返回:

如果對象相同,則為 true; 否則為false。

isIPv4CompatibleAddress

public boolean isIPv4CompatibleAddress()

檢查 InetAddress 是否為與 IPv4 兼容的 IPv6 地址的實用程序。

返回:

一個布爾值,指示 InetAddress 是否是與 IPv4 兼容的 IPv6 地址; 如果地址是 IPv4 地址,則為 false。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號