這個方法用來得到主機的IP地址,這個IP地址可能是IPv4的地址,也可能是IPv6的地址。getHostAddress方法的定義如下:
public String getHostAddress() |
無論InetAddress對像是使用哪種方式創建的,getHostAddress方法都不會訪問DNS 服務器。如果想訪問使用IPv6地址的遠程主機,需要在操作系統上安裝IPv6 協議。下面是Windows 2003上安裝IPv6 協議的步驟:
第一步:打開“本地連接”屬性對話框。如圖1所示。
第二步:點擊“安裝”按鈕,出現“選擇網絡組件類型”對話框,選擇“ 協議 ”選項後,點擊“添加”按鈕,出現如圖2的“選擇網絡協議”對話框,選擇“Microsoft TCP /IP版本6”,最後點擊“確定”按鈕。
除了使用圖形化界面來安裝IPv6外,還可以使用如下命令行來安裝IPv6:
netsh interface ipv6 install |
下面的代碼演示瞭如何利用getHostAddress得到IPv4和IPv6地址,以及如何得到本機的所有IP地址(包括IPv4和IPv6地址)。
| package mynet; import java.net. * ; public class MyIP { public static void main(String[] args) throws Exception { // 輸出IPv4地址 InetAddress ipv4Address1 = InetAddress.getByName( " 1.2.3.4 " ); System.out. println( " ipv4Address1: " + ipv4Address1.getHostAddress()); InetAddress ipv4Address2 = InetAddress.getByName( " www.ibm.com " ); System.out.println( " ipv4Address2: " + ipv4Address2.getHostAddress()); InetAddress ipv4Address3 = InetAddress.getByName( " myuniverse " ); System.out.println( " ipv4Address3: " + ipv4Address3.getHostAddress()); // 輸出IPv6地址 InetAddress ipv6Address1 = InetAddress.getByName( " abcd:123::22ff " ); System.out.println( " ipv6Address1: " + ipv6Address1.getHostAddress()); InetAddress ipv6Address2 = InetAddress.getByName( " www.neu6.edu.cn " ); System.out.println( " ipv6Address2: " + ipv6Address2.getHostAddress()); // 輸出本機全部的IP地址 InetAddress Addresses[] = InetAddress.getAllByName( " myuniverse " ); for (InetAddress address : Addresses) System.out.println( " 本機地址:" + address.getHostAddress()); } } |
在上面代碼中使用了www.neu6.edu.cn作為域名,這個域名是東北大學用於測試 IPv6地址的域名。下面是其他一些可用於測試 IPv6的域名,讀者可以使用ping命令或例程3-9來測試這些域名。
www6.whu.edu.cn (武漢大學) |
在訪問這些域名之前,本機必須使用上述的方法或命令行安裝IPv6,否則getByName方法將拋出UnknownHostException異常。
運行結果:
ipv4Address1: 1.2.3.4 |
在上面的運行結果中的IP地址192.168.18.10和192.10.10.10是和本機網卡綁定的兩個IP,而192.168.83.1和192.168.189.1是VMware虛擬機軟件在本機安裝的兩個虛擬網卡的地址。最後一個IPv6地址0:0:0:0:0:0:0:1是代表本機的IPv6網址,相當於IPv4地址的127.0.0.1.讀者可以使用如下命令行添加IPv6地址和刪除IPv6:
添加IPv6地址
| netsh interface ipv6 add address " 本地連接" aa:bb::cc |
刪除IPv6
| netsh interface ipv6 uninstall |
| 歡迎光臨 冰楓論壇 (https://bingfong.com/) | Powered by 冰楓 |