天天看點

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後,必須重新啟動計算機才能生效。

<a href="http://www.eoeandroid.com/forumdisplay.php?fid=4">國内最棒的Google Android技術社群(eoeandroid),歡迎通路!</a>

繼續閱讀