隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
          數(shù)據(jù)加載中……

          Java網(wǎng)絡(luò)編程從入門到精通(7):用getHostAddress方法獲得IP地址

          本文為原創(chuàng),如需轉(zhuǎn)載,請注明作者和出處,謝謝!

          上一篇: Java網(wǎng)絡(luò)編程從入門到精通(6):使用getCanonicalHostName方法獲得主機(jī)名

            
          這個方法用來得到主機(jī)的IP地址,這個IP地址可能是IPv4的地址,也可能是IPv6的地址。getHostAddress方法的定義如下:

          public String getHostAddress()

          無論InetAddress對象是使用哪種方式創(chuàng)建的,getHostAddress方法都不會訪問DNS服務(wù)器。如果想訪問使用IPv6地址的遠(yuǎn)程主機(jī),需要在操作系統(tǒng)上安裝IPv6協(xié)議。下面是Windows 2003上安裝IPv6協(xié)議的步驟:

          第一步:打開本地連接屬性對話框。如圖1所示

          圖1 “本地連接”屬性對話框


           
          第二步:點擊安裝按鈕,出現(xiàn)選擇網(wǎng)絡(luò)組件類型對話框,選擇協(xié)議選項后,點擊添加按鈕,出現(xiàn)如圖2選擇網(wǎng)絡(luò)協(xié)議對話框,選擇“Microsoft TCP/IP 版本6”,最后點擊確定按鈕。

          圖2  “選擇網(wǎng)絡(luò)協(xié)議”對話框

          除了使用圖形化界面來安裝IPv6外,還可以使用如下命令行來安裝IPv6

          netsh interface ipv6 install

          下面的代碼演示了如何利用getHostAddress得到IPv4IPv6地址,以及如何得到本機(jī)的所有IP地址(包括IPv4IPv6地址)。

          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());
                  
          // 輸出本機(jī)全部的IP地址
                  InetAddress Addresses[] = InetAddress.getAllByName("myuniverse");
                  
          for (InetAddress address : Addresses)
                      System.out.println(
          "本機(jī)地址:" + address.getHostAddress());
              }
          }

          在上面代碼使用了www.neu6.edu.cn作為域名,這個域名是東北大學(xué)用于測試IPv6地址的域名。下面是其他一些可用于測試IPv6的域名,讀者可以使用ping命令或例程3-9來測試這些域名。

          www6.whu.edu.cn (武漢大學(xué))
          www.jlu6.edu.cn(吉林大學(xué))
          www6.usst.edu.cn(上海理工大學(xué))
          www.fudan6.edu.cn(復(fù)旦大學(xué))

          在訪問這些域名之前,本機(jī)必須使用上述的方法或命令行安裝IPv6,否則getByName方法將拋出UnknownHostException異常。

              運(yùn)行結(jié)果:

          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
          本機(jī)地址:
          192.168.18.10
          本機(jī)地址:
          192.168.83.1
          本機(jī)地址:
          192.168.189.1
          本機(jī)地址:
          193.10.10.10
          本機(jī)地址:
          0:0:0:0:0:0:0:1

          在上面的運(yùn)行結(jié)果中的IP地址192.168.18.10192.10.10.10是和本機(jī)網(wǎng)卡綁定的兩個IP,而192.168.83.1192.168.189.1VMware虛擬機(jī)軟件在本機(jī)安裝的兩個虛擬網(wǎng)卡的地址。最后一個IPv6地址0:0:0:0:0:0:0:1是代表本機(jī)的IPv6網(wǎng)址,相當(dāng)于IPv4地址的127.0.0.1。讀者可以使用如下命令行添加IPv6地址和刪除IPv6

          添加IPv6地址

          netsh interface ipv6 add address "本地連接" aa:bb::cc

          刪除IPv6

          netsh interface ipv6 uninstall

          注意:安裝IPv6不需要重新啟動計算機(jī),但添加IPv6地址或刪除IPv6后,必須重新啟動計算機(jī)才能生效。

          下一篇:Java網(wǎng)絡(luò)編程從入門到精通(8):用getAddress方法獲得IP地址



          Android開發(fā)完全講義(第2版)(本書版權(quán)已輸出到臺灣)

          http://product.dangdang.com/product.aspx?product_id=22741502



          Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


          新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

          posted on 2009-04-21 12:33 銀河使者 閱讀(6495) 評論(0)  編輯  收藏 所屬分類: java 原創(chuàng)網(wǎng)絡(luò)編程

          主站蜘蛛池模板: 娄底市| 民乐县| 渝中区| 光泽县| 怀宁县| 葵青区| 太和县| 射洪县| 芦山县| 大埔区| 长宁区| 西平县| 德江县| 白银市| 阜新| 青河县| 涿州市| 教育| 伊通| 平远县| 怀化市| 新建县| 东乌珠穆沁旗| 八宿县| 宜宾市| 巨野县| 清苑县| 宜都市| 佳木斯市| 南投市| 和政县| 闽清县| 祁连县| 辽宁省| 临清市| 黑水县| 定日县| 绥德县| 汾阳市| 凯里市| 巴林右旗|