W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
java.lang.Object
|---java.net.InetAddress
public class InetAddress
extends Object
implements Serializable
此類表示 Internet 協(xié)議 (IP) 地址。
IP 地址是 IP 使用的 32 位或 128 位無符號數(shù)字,IP 是一種較低級別的協(xié)議,UDP 和 TCP 等協(xié)議都基于該協(xié)議構(gòu)建。 IP 地址架構(gòu)由 RFC 790:分配的號碼、RFC 1918:專用 Internet 的地址分配、RFC 2365:管理范圍的 IP 多播和 RFC 2373:IP 版本 6 尋址架構(gòu)定義。 InetAddress 的一個實例由一個 IP 地址和可能的它對應的主機名組成(取決于它是用主機名構(gòu)造的,還是已經(jīng)完成了反向主機名解析)。
地址類型 IP 地址范圍
鏈路本地地址設計用于在單個鏈路上尋址,用于自動地址配置、鄰居發(fā)現(xiàn)或不存在路由器時。
站點本地地址旨在用于在站點內(nèi)部進行尋址,而無需全局前綴。
全球地址在互聯(lián)網(wǎng)上是唯一的。
IP 地址的文本表示 IP 地址的文本表示是地址族特定的。
有幾個系統(tǒng)屬性會影響 IPv4 和 IPv6 地址的使用方式。
主機名解析 主機名到 IP 地址的解析是通過結(jié)合使用本地機器配置信息和網(wǎng)絡命名服務(例如域名系統(tǒng) (DNS) 和網(wǎng)絡信息服務 (NIS))來完成的。 默認情況下,正在使用的特定命名服務是本地計算機配置的服務。 對于任何主機名,都會返回其對應的 IP 地址。
反向名稱解析意味著對于任何 IP 地址,都會返回與該 IP 地址關聯(lián)的主機。
InetAddress 類提供將主機名解析為其 IP 地址的方法,反之亦然。
InetAddress 緩存 InetAddress 類有一個緩存來存儲成功和不成功的主機名解析。
默認情況下,安裝安全管理器時,為了防止 DNS 欺騙攻擊,正向主機名解析的結(jié)果將被永久緩存。未安裝安全管理器時,默認行為是將條目緩存一段有限的(取決于實現(xiàn)的)時間段。不成功的主機名解析結(jié)果將被緩存很短的時間(10 秒)以提高性能。
如果不需要默認行為,則可以將 Java 安全屬性設置為不同的生存時間 (TTL) 值以進行正緩存。同樣,系統(tǒng)管理員可以在需要時配置不同的負緩存 TTL 值。
兩個 Java 安全屬性控制用于正和負主機名解析緩存的 TTL 值:
networkaddress.cache.ttl
指示從名稱服務中成功查找名稱的緩存策略。 該值指定為整數(shù),以指示緩存成功查找的秒數(shù)。 默認設置是緩存實現(xiàn)特定的時間段。
-1 值表示“永遠緩存”。
networkaddress.cache.negative.ttl (默認值:10)
指示來自名稱服務的不成功名稱查找的緩存策略。 該值指定為整數(shù),以指示緩存不成功查找失敗的秒數(shù)。
值 0 表示“從不緩存”。 -1 值表示“永遠緩存”。
修飾符和類型 | 方法 | 描述 |
---|---|---|
boolean | equals(Object obj) | 將此對象與指定對象進行比較。 |
byte[] | getAddress() | 返回此 InetAddress 對象的原始 IP 地址。 |
static InetAddress[] | getAllByName(String host) | 給定主機的名稱,根據(jù)系統(tǒng)上配置的名稱服務返回其 IP 地址的數(shù)組。 |
static InetAddress | getByAddress(byte[] addr) | 返回給定原始 IP 地址的 InetAddress 對象。 |
static InetAddress | getByAddress(String host, byte[] addr) | 根據(jù)提供的主機名和 IP 地址創(chuàng)建 InetAddress。 |
static InetAddress | getByName(String host) | 給定主機名,確定主機的 IP 地址。 |
String | getCanonicalHostName() | 獲取此 IP 地址的完全限定域名。 |
String | getHostAddress() | 以文本形式返回 IP 地址字符串。 |
String | getHostName() | 獲取此 IP 地址的主機名。 |
static InetAddress | getLocalHost() | 返回本地主機的地址。 |
static InetAddress | getLoopbackAddress() | 返回環(huán)回地址。 |
int | hashCode() | 返回此 IP 地址的哈希碼。 |
boolean | isAnyLocalAddress() | 檢查 InetAddress 是否在通配符地址中的實用程序。 |
boolean | isLinkLocalAddress() | 檢查 InetAddress 是否為鏈接本地地址的實用程序。 |
boolean | isLoopbackAddress() | 檢查 InetAddress 是否為環(huán)回地址的實用程序。 |
boolean | isMCGlobal() | 檢查多播地址是否具有全局范圍的實用程序。 |
boolean | isMCLinkLocal() | 檢查多播地址是否具有鏈接范圍的實用程序。 |
boolean | isMCNodeLocal() | 檢查多播地址是否具有節(jié)點范圍的實用程序。 |
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 地址轉(zhuǎn)換為字符串。 |
從類 java.lang.Object 繼承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
public boolean isMulticastAddress()
檢查 InetAddress 是否為 IP 多播地址的實用程序。
返回:
一個布爾值,指示 InetAddress 是否為 IP 多播地址
public boolean isAnyLocalAddress()
檢查 InetAddress 是否在通配符地址中的實用程序。
返回:
一個布爾值,指示 Inetaddress 是否為通配符地址。
public boolean isLoopbackAddress()
檢查 InetAddress 是否為環(huán)回地址的實用程序。
返回:
一個布爾值,指示 InetAddress 是否為環(huán)回地址; 否則為假。
public boolean isLinkLocalAddress()
檢查 InetAddress 是否為鏈接本地地址的實用程序。
返回:
一個布爾值,指示 InetAddress 是否是鏈接本地地址; 如果地址不是鏈接本地單播地址,則為 false。
public boolean isSiteLocalAddress()
檢查 InetAddress 是否為站點本地地址的實用程序例程。
返回:
一個布爾值,指示 InetAddress 是否是站點本地地址; 如果地址不是站點本地單播地址,則為 false。
public boolean isMCGlobal()
檢查多播地址是否具有全局范圍的實用程序。
返回:
一個布爾值,指示地址是否是全局范圍的多播地址,如果不是全局范圍或不是多播地址,則為 false
public boolean isMCNodeLocal()
檢查多播地址是否具有節(jié)點范圍的實用程序。
返回:
一個布爾值,指示地址是否是節(jié)點本地范圍的多播地址,如果它不是節(jié)點本地范圍或不是多播地址,則為 false
public boolean isMCLinkLocal()
檢查多播地址是否具有鏈接范圍的實用程序。
返回:
一個布爾值,指示地址是否是鏈路本地范圍的多播地址,如果不是鏈路本地范圍或不是多播地址,則為 false
public boolean isMCSiteLocal()
檢查多播地址是否具有站點范圍的實用程序。
返回:
一個布爾值,指示地址是否是站點本地范圍的多播地址,如果它不是站點本地范圍或不是多播地址,則為 false
public boolean isMCOrgLocal()
檢查多播地址是否具有組織范圍的實用程序。
返回:
一個布爾值,指示地址是否是組織本地范圍的多播地址,如果它不是組織本地范圍或不是多播地址,則為 false
public boolean isReachable(int timeout) throws IOException
測試該地址是否可達。 實現(xiàn)會盡最大努力嘗試訪問主機,但防火墻和服務器配置可能會阻止請求,從而導致無法訪問狀態(tài),而某些特定端口可能可以訪問。 如果可以獲得特權,典型的實現(xiàn)將使用 ICMP ECHO REQUEST,否則它將嘗試在目標主機的端口 7 (Echo) 上建立 TCP 連接。
超時值(以毫秒為單位)表示嘗試應該花費的最長時間。 如果在得到應答之前操作超時,則認為主機不可達。 負值將導致拋出 IllegalArgumentException。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
timeout | 呼叫中止之前的時間(以毫秒為單位) |
返回:
一個布爾值,指示地址是否可達。
Throws:
Throw名稱 | Throw描述 |
---|---|
IOException | 如果發(fā)生網(wǎng)絡錯誤 |
IllegalArgumentException | 如果超時為負。 |
public boolean isReachable(NetworkInterface netif, int ttl, int timeout) throws IOException
測試該地址是否可達。 實現(xiàn)會盡最大努力嘗試訪問主機,但防火墻和服務器配置可能會阻止請求,從而導致無法訪問狀態(tài),而某些特定端口可能可以訪問。 如果可以獲得特權,典型的實現(xiàn)將使用 ICMP ECHO REQUEST,否則它將嘗試在目標主機的端口 7 (Echo) 上建立 TCP 連接。
網(wǎng)絡接口和 ttl 參數(shù)讓調(diào)用者指定測試將通過哪個網(wǎng)絡接口以及數(shù)據(jù)包應該通過的最大跳數(shù)。 ttl 的負值將導致拋出 IllegalArgumentException。
超時值(以毫秒為單位)表示嘗試應該花費的最長時間。 如果在得到應答之前操作超時,則認為主機不可達。 負值將導致拋出 IllegalArgumentException。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
netif | 將通過其完成測試的 NetworkInterface,或者對于任何接口為 null |
ttl | 要嘗試的最大跳數(shù)或默認值為 0 |
timeout | 呼叫中止之前的時間(以毫秒為單位) |
返回:
一個布爾值,指示地址是否可達。
Throws:
Throw名稱 | Throw描述 |
---|---|
IllegalArgumentException | 如果 timeout 或 ttl 為負數(shù)。 |
IOException | 如果發(fā)生網(wǎng)絡錯誤 |
public String getHostName()
獲取此 IP 地址的主機名。
如果這個 InetAddress 是用一個主機名創(chuàng)建的,這個主機名會被記住并返回; 否則,將執(zhí)行反向名稱查找,并根據(jù)系統(tǒng)配置的名稱查找服務返回結(jié)果。 如果需要查找名稱服務,請調(diào)用 getCanonicalHostName。
如果有安全管理器,首先調(diào)用它的 checkConnect 方法,并使用主機名和 -1 作為其參數(shù),以查看是否允許該操作。 如果不允許該操作,它將返回 IP 地址的文本表示。
返回:
此 IP 地址的主機名,或者如果安全檢查不允許該操作,則為 IP 地址的文本表示。
public String getCanonicalHostName()
獲取此 IP 地址的完全限定域名。 盡力而為的方法,這意味著我們可能無法根據(jù)底層系統(tǒng)配置返回 FQDN。
如果有安全管理器,該方法首先調(diào)用它的 checkConnect 方法,以主機名和 -1 作為其參數(shù),以查看是否允許調(diào)用代碼知道該 IP 地址的主機名,即連接到主機。 如果不允許該操作,它將返回 IP 地址的文本表示。
返回:
此 IP 地址的完全限定域名,或者如果安全檢查不允許該操作,則為 IP 地址的文本表示。
public byte[] getAddress()
返回此 InetAddress 對象的原始 IP 地址。 結(jié)果按網(wǎng)絡字節(jié)順序排列:地址的最高字節(jié)在 getAddress()[0] 中。
返回:
此對象的原始 IP 地址。
public String getHostAddress()
以文本形式返回 IP 地址字符串。
返回:
字符串格式的原始 IP 地址。
public int hashCode()
返回此 IP 地址的哈希碼。
覆蓋:
類 Object 中的 hashCode
返回:
此 IP 地址的哈希碼值。
public boolean equals(Object obj)
將此對象與指定對象進行比較。 當且僅當參數(shù)不為 null 并且它表示與此對象相同的 IP 地址時,結(jié)果才為真。
如果 getAddress 返回的字節(jié)數(shù)組的長度對于兩者相同,并且每個數(shù)組組件對于字節(jié)數(shù)組都相同,則 InetAddress 的兩個實例表示相同的 IP 地址。
覆蓋:
類 Object 中的等于
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
obj | 要比較的對象。 |
返回:
如果對象相同,則為 true; 否則為false。
public String toString()
將此 IP 地址轉(zhuǎn)換為字符串。 返回的字符串格式為:主機名/文字 IP 地址。 如果主機名未解析,則不執(zhí)行反向名稱服務查找。 主機名部分將由一個空字符串表示。
覆蓋:
類 Object 中的 toString
返回:
此 IP 地址的字符串表示形式。
public static InetAddress getByAddress(String host, byte[] addr) throws UnknownHostException
根據(jù)提供的主機名和 IP 地址創(chuàng)建 InetAddress。 不檢查名稱服務的地址有效性。
主機名可以是機器名,例如“java.sun.com”,也可以是其 IP 地址的文本表示。
也不會對主機名進行有效性檢查。
如果 addr 指定 IPv4 地址,則將返回 Inet4Address 的實例; 否則,將返回 Inet6Address 的實例。
IPv4 地址字節(jié)數(shù)組必須為 4 字節(jié)長,IPv6 字節(jié)數(shù)組必須為 16 字節(jié)長
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
host | 指定的主機 |
addr | 網(wǎng)絡字節(jié)順序的原始 IP 地址 |
返回:
從原始 IP 地址創(chuàng)建的 InetAddress 對象。
Throws:
Throw名稱 | Throw描述 |
---|---|
UnknownHostException | 如果 IP 地址的長度非法 |
public static InetAddress getByName(String host) throws UnknownHostException
給定主機名,確定主機的 IP 地址。
主機名可以是機器名,例如“java.sun.com”,也可以是其 IP 地址的文本表示。 如果提供了文字 IP 地址,則僅檢查地址格式的有效性。
對于以文字 IPv6 地址指定的主機,接受 RFC 2732 中定義的格式或 RFC 2373 中定義的文字 IPv6 地址格式。 還支持 IPv6 范圍地址。
如果主機為空,則返回表示環(huán)回接口地址的 InetAddress。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
host | 指定的主機,或者為空。 |
返回:
給定主機名的 IP 地址。
Throws:
Throw名稱 | Throw描述 |
---|---|
UnknownHostException | 如果找不到主機的 IP 地址,或者為全局 IPv6 地址指定了 scope_id。 |
SecurityException | 如果存在安全管理器并且其 checkConnect 方法不允許該操作 |
public static InetAddress[] getAllByName(String host) throws UnknownHostException
給定主機的名稱,根據(jù)系統(tǒng)上配置的名稱服務返回其 IP 地址的數(shù)組。
主機名可以是機器名,例如“java.sun.com”,也可以是其 IP 地址的文本表示。如果提供了文字 IP 地址,則僅檢查地址格式的有效性。
對于以文字 IPv6 地址指定的主機,接受 RFC 2732 中定義的格式或 RFC 2373 中定義的文字 IPv6 地址格式。文字 IPv6 地址也可以通過附加作用域區(qū)域標識符或 scope_id 來限定。此處描述了 scope_ids 的語法和用法。
如果主機為空,則返回表示環(huán)回接口地址的 InetAddress。
如果存在安全管理器且主機不為空且 host.length() 不等于 0,則使用主機名和 -1 作為其參數(shù)調(diào)用安全管理器的 checkConnect 方法,以查看是否允許操作。
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
host | 主機名,或為空。 |
返回:
給定主機名的所有 IP 地址的數(shù)組。
Throws:
Throw名稱 | Throw描述 |
---|---|
UnknownHostException | 如果找不到主機的 IP 地址,或者為全局 IPv6 地址指定了 scope_id。 |
SecurityException | 如果存在安全管理器并且其 checkConnect 方法不允許該操作。 |
public static InetAddress getLoopbackAddress()
返回環(huán)回地址。
返回的 InetAddress 將表示 IPv4 環(huán)回地址 127.0.0.1 或 IPv6 環(huán)回地址 ::1。 返回的 IPv4 環(huán)回地址只是 127...* 形式的眾多地址之一
返回:
InetAddress 環(huán)回實例。
public static InetAddress getByAddress(byte[] addr) throws UnknownHostException
返回給定原始 IP 地址的 InetAddress 對象。 參數(shù)按網(wǎng)絡字節(jié)順序排列:地址的最高字節(jié)在 getAddress()[0] 中。
此方法不會阻塞,即不執(zhí)行反向名稱服務查找。
IPv4 地址字節(jié)數(shù)組必須為 4 字節(jié)長,IPv6 字節(jié)數(shù)組必須為 16 字節(jié)長
參數(shù):
參數(shù)名稱 | 參數(shù)描述 |
---|---|
addr | 網(wǎng)絡字節(jié)順序的原始 IP 地址 |
返回:
從原始 IP 地址創(chuàng)建的 InetAddress 對象。
Throws:
Throw名稱 | Throw描述 |
---|---|
UnknownHostException | 如果 IP 地址的長度非法 |
public static InetAddress getLocalHost() throws UnknownHostException
返回本地主機的地址。 這是通過從系統(tǒng)中檢索主機的名稱,然后將該名稱解析為 InetAddress 來實現(xiàn)的。
注意:解析后的地址可能會被緩存一小段時間。
如果有安全管理器,則使用本地主機名和 -1 作為其參數(shù)調(diào)用其 checkConnect 方法,以查看是否允許該操作。 如果不允許該操作,則返回表示環(huán)回地址的 InetAddress。
返回:
本地主機的地址。
Throws:
Throw名稱 | Throw描述 |
---|---|
UnknownHostException | 如果本地主機名無法解析為地址。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: