|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.net.InetAddress
public class InetAddress
此類別表示網際網路協議 (IP) 位址。
IP 位址是 IP 使用的 32 位或 128 位無符號數字,它是一種低層級協議,UDP 和 TCP 協議都是在它的基礎上建構的。IP 位址的體系結構是由 RFC 790:Assigned Numbers、 RFC 1918:Address Allocation for Private Internets、RFC 2365:Administratively Scoped IP Multicast 和 RFC 2373:IP Version 6 Addressing Architecture 定義的。InetAddress 的實例包含 IP 位址,還可能包含相應的主機名(取決於它是否用主機名建構或者是否已執行反向主機名解析)。
單播 單個介面的標識符。發送到單播位址的資料封包被交付給由該位址標識的介面。 多點傳送位址:也稱為 anylocal 位址或通配符位址。一定不能將其分派給任何節點。它指示缺少位址。它的一個使用範例是可以作為綁定的目標,這允許伺服器在伺服器主機有多個介面的情況下接收任何介面上的客戶端連接。
未指定 位址一定不能用作 IP 資料封包的目標位址。
回送 位址:它是分派給回送介面的位址。發送到此 IP 位址的任何內容都將返回並作為本地主機上的 IP 輸入。此位址常常在測試客戶機時使用。
多點傳送 一組介面(通常屬於不同的節點)的標識符。發送到多點傳送位址的資料封包被交付給由該位址標識的所有介面。
連接本地 位址設計用於在單個連接上尋址以解決諸如自動位址配置、鄰居發現 (neighbor discovery) 或沒有路由器時的問題。
站點本地 位址設計用於在不需要全體前綴時站點內部尋址。
全體 位址在 Internet 中是唯一的。
有關 IPv4 位址格式,請參閱 Inet4Address#format,有關 IPv6 位址格式,請參閱 Inet6Address#format。
反向名稱解析 意味著對於任何 IP 位址,都返回與 IP 位址關聯的主機。
InetAddress 類別提供將主機名解析為其 IP 位址(或反之)的方法。
預設情況下,當為了防止 DNS 哄騙攻擊安裝了安全管理器時,正主機名解析的結果會永遠快取記憶體。當未安裝安全管理器時,預設行為將快取記憶體一段有限(與實作相關)時間的條目。不成功主機名解析的結果快取記憶體非常短的時間(10 秒)以提高性能。
如果不需要預設行為,則可以將 Java 安全屬性設置為另外的 Time-to-live (TTL) 值來進行正快取記憶體。類似地,系統管理員在需要時可以配置另外的負快取記憶體 TTL 值。
兩個 Java 安全屬性控制著用於正負主機名解析快取記憶體的 TTL 值:
- networkaddress.cache.ttl
- 指示從名稱服務進行成功名稱尋找的快取記憶體策略。該值被指定為整數,指示快取記憶體成功尋找的秒數。預設設置將在某個特定於實作的時間內快取記憶體。
值 -1 指示“永遠快取記憶體”。
- networkaddress.cache.negative.ttl(預設值:10)
- 指示從名稱服務進行不成功名稱尋找的快取記憶體策略。該值被指定為整數,指示快取記憶體不成功尋找故障的秒數。
值 0 指示“永遠不快取記憶體”。值 -1 指示“永遠快取記憶體”。
getByAddress(byte[])
,
getByAddress(java.lang.String, byte[])
,
getAllByName(java.lang.String)
,
getByName(java.lang.String)
,
getLocalHost()
,
序列化表格方法摘要 | |
---|---|
boolean |
equals(Object obj)
將此物件與指定物件比較。 |
byte[] |
getAddress()
返回此 InetAddress 物件的原始 IP 位址。 |
static InetAddress[] |
getAllByName(String host)
在給定主機名的情況下,根據系統上配置的名稱服務返回其 IP 位址所組成的陣列。 |
static InetAddress |
getByAddress(byte[] addr)
在給定原始 IP 位址的情況下,返回 InetAddress 物件。 |
static InetAddress |
getByAddress(String host,
byte[] addr)
根據提供的主機名和 IP 位址創建 InetAddress。 |
static InetAddress |
getByName(String host)
在給定主機名的情況下確定主機的 IP 位址。 |
String |
getCanonicalHostName()
獲取此 IP 位址的完全限定域名。 |
String |
getHostAddress()
返回 IP 位址字元串(以文本表現形式)。 |
String |
getHostName()
獲取此 IP 位址的主機名。 |
static InetAddress |
getLocalHost()
返回本地主機。 |
int |
hashCode()
返回此 IP 位址的雜湊碼。 |
boolean |
isAnyLocalAddress()
檢查 InetAddress 是否是通配符位址的實用例行程序。 |
boolean |
isLinkLocalAddress()
檢查 InetAddress 是否是連接本地位址的實用例行程序。 |
boolean |
isLoopbackAddress()
檢查 InetAddress 是否是回送位址的實用例行程序。 |
boolean |
isMCGlobal()
檢查多點傳送位址是否具有全體域的實用例行程序。 |
boolean |
isMCLinkLocal()
檢查多點傳送位址是否具有連接範圍的實用例行程序。 |
boolean |
isMCNodeLocal()
檢查多點傳送位址是否具有節點範圍的實用例行程序。 |
boolean |
isMCOrgLocal()
檢查多點傳送位址是否具有組織範圍的實用例行程序。 |
boolean |
isMCSiteLocal()
檢查多點傳送位址是否具有站點範圍的實用例行程序。 |
boolean |
isMulticastAddress()
檢查 InetAddress 是否是 IP 多點傳送位址的實用例行程序。 |
boolean |
isReachable(int timeout)
測試是否可以達到該位址。 |
boolean |
isReachable(NetworkInterface netif,
int ttl,
int timeout)
測試是否可以達到該位址。 |
boolean |
isSiteLocalAddress()
檢查 InetAddress 是否是站點本地位址的實用例行程序。 |
String |
toString()
將此 IP 位址轉換為 String 。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
方法詳細資訊 |
---|
public boolean isMulticastAddress()
boolean
值public boolean isAnyLocalAddress()
boolean
值public boolean isLoopbackAddress()
boolean
值;否則返回 false。public boolean isLinkLocalAddress()
boolean
值;如果位址不是連接本地單播位址,則返回 false。public boolean isSiteLocalAddress()
boolean
值;如果位址不是站點本地單播位址,則返回 false。public boolean isMCGlobal()
boolean
值;如果它不是全體域或多點傳送位址,則返回 falsepublic boolean isMCNodeLocal()
boolean
值;如果它不是節點本地範圍或多點傳送位址,則返回 falsepublic boolean isMCLinkLocal()
boolean
值;如果它不是連接本地範圍或多點傳送位址,則返回 falsepublic boolean isMCSiteLocal()
boolean
;如果它不是站點本地範圍或多點傳送位址,則返回 falsepublic boolean isMCOrgLocal()
boolean
值;如果它不是組織本地範圍或多點傳送位址,則返回 falsepublic boolean isReachable(int timeout) throws IOException
逾時值(以毫秒為單位)指示嘗試應該使用的最大時間量。如果在獲取應答前操作逾時了,則視為主機不可到達。負值將導致拋出 IllegalArgumentException。
timeout
- 調用中止前的時間(以毫秒為單位)
boolean
值。
IOException
- 如果發生網路錯誤
IllegalArgumentException
- 如果 timeout
為負。public boolean isReachable(NetworkInterface netif, int ttl, int timeout) throws IOException
network interface
和 ttl
參數允許調用方指定測試將遍歷的網路介面和資料封包將遍歷的最大跳數。ttl
為負值將導致拋出 IllegalArgumentException。
逾時值(以毫秒為單位)指示嘗試應該使用的最大時間量。如果在獲取應答前操作逾時了,則視為主機不可到達。負值將導致拋出 IllegalArgumentException。
netif
- 將用於完成測試的 NetworkInterface;或者用於任何介面的 nullttl
- 要嘗試的最大跳數或預設值 0timeout
- 調用中止前的時間(以毫秒為單位)
boolean
值。
IllegalArgumentException
- 如果 timeout
或 ttl
為負。
IOException
- 如果發生網路錯誤public String getHostName()
如果此 InetAddress 是用主機名創建的,則記憶並返回主機名;否則,將執行反向名稱尋找並基於系統配置的名稱尋找服務返回結果。如果需要尋找名稱服務,則調用 getCanonicalHostName
。
如果有安全管理器,則首先使用主機名和 -1
作為參數來調用其 checkConnect
方法,以查看是否允許該操作。如果不允許該操作,則其返回 IP 位址的文本表示形式。
getCanonicalHostName()
,
SecurityManager.checkConnect(java.lang.String, int)
public String getCanonicalHostName()
如果有安全管理器,則此方法首先使用主機名和 -1
作為參數調用其 checkConnect
方法,來查看是否允許調用程式碼知道此 IP 位址的主機名(即是否允許連接到該主機)。如果不允許該操作,則其返回 IP 位址的文本表示形式。
SecurityManager.checkConnect(java.lang.String, int)
public byte[] getAddress()
InetAddress
物件的原始 IP 位址。結果按網路位元組順序:位址的高位位元組位於 getAddress()[0]
中。
public String getHostAddress()
public int hashCode()
Object
中的 hashCode
Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
null
,並且它表示與此物件相同的 IP 位址時,結果才為 true
。
如果 getAddress
對兩個 InetAddress
返回的 byte 陣列長度相同並且 byte 陣列的每個陣列元素也都相同,則這兩個 InetAddress
的實例表示相同的 IP 位址。
Object
中的 equals
obj
- 要與之比較的物件。
true
;否則,返回 false
。getAddress()
public String toString()
String
。返回的字元串具有以下形式:主機名/文字值 IP 位址。
如果主機名是未解析的,則不執行反向名稱服務尋找。主機名部分將由一個空字元串表示。
Object
中的 toString
public static InetAddress getByAddress(String host, byte[] addr) throws UnknownHostException
主機名可以是機器名(如 "java.sun.com
"),也可以是其 IP 位址的文本表示形式。
也不在主機名上執行有效性檢查。
如果 addr 指定 IPv4 位址,則返回 Inet4Address 的實例;否則將返回 Inet6Address 的實例。
IPv4 位址 byte 陣列的長度必須為 4 個位元組,IPv6 byte 陣列的長度必須為 16 個位元組
host
- 指定主機addr
- 網路位元組順序的原始 IP 位址
UnknownHostException
- 如果 IP 位址的長度非法public static InetAddress getByName(String host) throws UnknownHostException
主機名可以是機器名(如 "java.sun.com
"),也可以是其 IP 位址的文本表示形式。如果提供文字值 IP 位址,則僅檢查位址格式的有效性。
對於以文字值 IPv6 位址指定的 host
,在 RFC 2732 中定義的形式或在 RFC 2373 中定義的文字值 IPv6 位址格式都可以接受。IPv6 範圍位址也受支持。有關 IPv6 範圍位址的描述,請參見這裡。
如果主機為 null,則返回表示回送介面位址的 InetAddress。請參閱 RFC 3330 的第 2 節和 RFC 2373 的第 2.5.3 節。
host
- 指定的主機,或 null
。
UnknownHostException
- 如果找不到 host
的 IP 位址,或者 scope_id 是為全體 IPv6 位址指定的。
SecurityException
- 如果安全管理器存在並且其 checkConnect 方法不允許進行該操作public static InetAddress[] getAllByName(String host) throws UnknownHostException
主機名可以是機器名(如 "java.sun.com
"),也可以是其 IP 位址的文本表示形式。如果提供文字值 IP 位址,則僅檢查位址格式的有效性。
對於以文字值 IPv6 位址 指定的 host
,在 RFC 2732 中定義的形式或在 RFC 2373 中定義的文字值 IPv6 位址格式都可以接受。文字值 IPv6 位址還可以通過追加範圍時區標識符或 scope_id 來限定。scope_id 的語法和用法在這裡描述。
如果主機為 null,則返回表示回送介面位址的 InetAddress。請參閱 RFC 3330 的第 2 節和 RFC 2373 的第 2.5.3 節。
如果有安全管理器,並且 host
非 null,host.length()
不等於零,則使用主機名和 -1
作為參數調用安全管理器的 checkConnect
方法,來查看是否允許該操作。
host
- 主機名,或 null
。
UnknownHostException
- 如果找不到 host
的 IP 位址,或者 scope_id 是為全體 IPv6 位址指定的。
SecurityException
- 如果安全管理器存在並且其 checkConnect
方法不允許進行該操作。SecurityManager.checkConnect(java.lang.String, int)
public static InetAddress getByAddress(byte[] addr) throws UnknownHostException
InetAddress
物件。參數按網路位元組順序:位址的高位位元組位於 getAddress()[0]
中。
此方法不會阻塞,即不執行任何反向名稱服務尋找操作。
IPv4 位址 byte 陣列的長度必須為 4 個位元組,IPv6 byte 陣列的長度必須為 16 個位元組
addr
- 網路位元組順序的原始 IP 位址
UnknownHostException
- 如果 IP 位址的長度非法public static InetAddress getLocalHost() throws UnknownHostException
如果有安全管理器,則使用本地主機名和 -1
作為參數來調用其 checkConnect
方法,以查看是否允許該操作。如果不允許該操作,則返回表示回送位址的 InetAddress。
UnknownHostException
- 如果找不到 host
的任何 IP 位址。SecurityManager.checkConnect(java.lang.String, int)
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。