Java网络编程从入门到精通(7):用getHostAddress方法获得IP地址
生活随笔
收集整理的這篇文章主要介紹了
Java网络编程从入门到精通(7):用getHostAddress方法获得IP地址
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?這個方法用來得到主機的IP地址,這個IP地址可能是IPv4的地址,也可能是IPv6的地址。getHostAddress方法的定義如下:
public?String?getHostAddress() 無論InetAddress對象是使用哪種方式創建的,getHostAddress方法都不會訪問DNS服務器。如果想訪問使用IPv6地址的遠程主機,需要在操作系統上安裝IPv6協議。下面是Windows 2003上安裝IPv6協議的步驟:
第一步:打開“本地連接”屬性對話框。如圖1所示。
圖1 “本地連接”屬性對話框
?第二步:點擊“安裝”按鈕,出現“選擇網絡組件類型”對話框,選擇“協議”選項后,點擊“添加”按鈕,出現如圖2的“選擇網絡協議”對話框,選擇“Microsoft TCP/IP 版本6”,最后點擊“確定”按鈕。
圖2? “選擇網絡協議”對話框
除了使用圖形化界面來安裝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?(武漢大學)
www.jlu6.edu.cn(吉林大學)
www6.usst.edu.cn(上海理工大學)
www.fudan6.edu.cn(復旦大學)
在訪問這些域名之前,本機必須使用上述的方法或命令行安裝IPv6,否則getByName方法將拋出UnknownHostException異常。
運行結果: ipv4Address1:?1.2.3.4
ipv4Address2:?129.42.60.212
ipv4Address3:?192.168.18.10
ipv6Address1:?abcd:123:0:0:0:0:0:22ff
ipv6Address2:?2001:da8:9000:b255:200:e8ff:feb0:5c5e
本機地址:192.168.18.10
本機地址:192.168.83.1
本機地址:192.168.189.1
本機地址:193.10.10.10
本機地址:0:0:0:0:0:0:0:1
在上面的運行結果中的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 注意:安裝IPv6不需要重新啟動計算機,但添加IPv6地址或刪除IPv6后,必須重新啟動計算機才能生效。 國內最棒的Google Android技術社區(eoeandroid),歡迎訪問!
《銀河系列原創教程》發布
《Java Web開發速學寶典》出版,歡迎定購
public?String?getHostAddress() 無論InetAddress對象是使用哪種方式創建的,getHostAddress方法都不會訪問DNS服務器。如果想訪問使用IPv6地址的遠程主機,需要在操作系統上安裝IPv6協議。下面是Windows 2003上安裝IPv6協議的步驟:
第一步:打開“本地連接”屬性對話框。如圖1所示。
圖1 “本地連接”屬性對話框
?第二步:點擊“安裝”按鈕,出現“選擇網絡組件類型”對話框,選擇“協議”選項后,點擊“添加”按鈕,出現如圖2的“選擇網絡協議”對話框,選擇“Microsoft TCP/IP 版本6”,最后點擊“確定”按鈕。
圖2? “選擇網絡協議”對話框
除了使用圖形化界面來安裝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?(武漢大學)
www.jlu6.edu.cn(吉林大學)
www6.usst.edu.cn(上海理工大學)
www.fudan6.edu.cn(復旦大學)
在訪問這些域名之前,本機必須使用上述的方法或命令行安裝IPv6,否則getByName方法將拋出UnknownHostException異常。
運行結果: ipv4Address1:?1.2.3.4
ipv4Address2:?129.42.60.212
ipv4Address3:?192.168.18.10
ipv6Address1:?abcd:123:0:0:0:0:0:22ff
ipv6Address2:?2001:da8:9000:b255:200:e8ff:feb0:5c5e
本機地址:192.168.18.10
本機地址:192.168.83.1
本機地址:192.168.189.1
本機地址:193.10.10.10
本機地址:0:0:0:0:0:0:0:1
在上面的運行結果中的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 注意:安裝IPv6不需要重新啟動計算機,但添加IPv6地址或刪除IPv6后,必須重新啟動計算機才能生效。 國內最棒的Google Android技術社區(eoeandroid),歡迎訪問!
《銀河系列原創教程》發布
《Java Web開發速學寶典》出版,歡迎定購
總結
以上是生活随笔為你收集整理的Java网络编程从入门到精通(7):用getHostAddress方法获得IP地址的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10系统快速返回桌面的方法有哪些
- 下一篇: 想建一个带分隔条的label 控件;