隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0

          導航

          <2009年5月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          公告

          關注我的新浪微博

          我的著作









          常用鏈接

          留言簿(126)

          我參與的團隊

          隨筆分類(818)

          隨筆檔案(310)

          文章分類(1)

          文章檔案(8)

          相冊

          ADSL、3G查詢

          CSDN

          eclipse

          ibm

          Java EE

          Linux

          Web

          云服務

          代理網站

          關注的網站

          協議

          喜歡的Blog

          國內廣告平臺

          圖書出版

          在線培訓

          開發工具

          微博客戶端

          手機鈴聲

          操作系統

          • ReactOS
          • 一個與windowXP/2003兼容的操作系統

          數學

          文件格式

          源碼資源

          移動(Mobile)

          編程語言

          英語學習

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 1974709
          • 排名 - 6

          最新評論

          閱讀排行榜

          評論排行榜

          Java網絡編程從入門到精通(10):Inet4Address類和Inet6Address類

          本文為原創,如需轉載,請注明作者和出處,謝謝!

          上一篇:Java網絡編程從入門到精通 (9):使用isXxx方法判斷地址類型

              為了區分IPv4IPv6地址,Java提供了兩個類:Inet4AddressInet6Address,它們都是InetAddress類的子類,這兩個類的定義如下:

          public final class Inet4Address extends InetAddress
          public final class Inet6Address extends InetAddress

          這兩個類分別按著IPv4IPv6的規則實現了InetAddress類中的public方法。它們所不同的是Inet6Address類比Inet4Address類多了一個方法:isIPv4CompatibleAddress,這個方法用來判斷一個IPv6地址是否和IPv4地址兼容。和IPv4兼容的IPv6地址除了最后四個字節有值名,其他的字節都是0,如0:0:0:0:0:0.192.168.18.10::ABCD:FAFA都是和IPv4兼容的IPv6地址。

          當使用InetAddress類的四個靜態方法創建InetAddress對象后,可以通過getAddress返回的byte數組來判斷這個IP地址是IPv4還是IPv6地址(byte數組長度為4就是IPv4地址,byte數組長度為16就是IPv6地址),也可以將instanceof來確定InetAddress對象是它的哪個子類的實例。下面的代碼演示了如何判斷一個IP地址是IPv4還是IPv6地址:

          package mynet;

          import java.net.*;

          public class MyIP
          {
              
          public static void main(String[] args) throws Exception
              {
                  
          if (args.length == 0)
                      
          return;
                  InetAddress address 
          = InetAddress.getByName(args[0]);
                  System.out.println(
          "IP: " + address.getHostAddress());
                  
          switch (address.getAddress().length)
                  {
                      
          case 4:
                          System.out.println(
          "根據byte數組長度判斷這個IP地址是IPv4地址!");
                          
          break;
                      
          case 16:
                          System.out.println(
          "根據byte數組長度判斷這個IP地址是IPv6地址!");
                          
          break;
                  }
                  
          if (address instanceof Inet4Address)
                      System.out.println(
          "使用instanceof判斷這個IP地址是IPv4地址!");
                  
          else if (address instanceof Inet6Address)
                      System.out.println(
          "使用instanceof判斷這個IP地址是IPv6地址!");
              }
          }

          測試1

          執行如下命令:

          java mynet.MyIP www.csdn.net

          運行結果:

          IP: 211.100.26.122
          根據byte數組長度判斷這個IP地址是IPv4地址!
          使用instanceof判斷這個IP地址是IPv4地址!

          測試2

          執行如下命令:

          java mynet.MyIP www.neu6.edu.cn

          運行結果

          IP: 2001:da8:9000:b255:200:e8ff:feb0:5c5e
          根據byte數組長度判斷這個IP地址是IPv6地址!
          使用instanceof判斷這個IP地址是IPv6地址!

           

          下一篇:Java網絡編程從入門到精通(11):使用NetworkInterface類獲得網絡接口信息



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

          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-05-04 19:13 銀河使者 閱讀(5979) 評論(0)  編輯  收藏 所屬分類: java 原創網絡編程

          主站蜘蛛池模板: 鹤壁市| 武定县| 平邑县| 遂昌县| 明溪县| 蓬莱市| 南雄市| 灵璧县| 博乐市| 呼玛县| 海阳市| 雷州市| 阳山县| 仪陇县| 邢台县| 尉氏县| 长葛市| 福清市| 阿瓦提县| 漾濞| 麻江县| 永修县| 内丘县| 长寿区| 鄂托克前旗| 丰城市| 澳门| 和龙市| 宁德市| 乐昌市| 游戏| 阳东县| 陈巴尔虎旗| 叶城县| 登封市| 安阳市| 马山县| 汕头市| 潮安县| 郸城县| 扶绥县|