熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

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

2022-06-13   來源: Java核心技術 

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

   public final class InetAddress extends InetAddress
public final class InetAddress extends InetAddress

  這兩個類分別按著IPv和IPv的規則實現了InetAddress類中的public方法它們所不同的是InetAddress類比InetAddress類多了一個方法isIPvCompatibleAddress這個方法用來判斷一個IPv地址是否和IPv地址兼容和IPv兼容的IPv地址除了最後四個字節有值名其他的字節都是ABCDFAFA都是和IPv兼容的IPv地址

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

   package mynet;

import *;

public class MyIP
{
    public static void main(String[] args) throws Exception
    {
        if (argslength == )
            return;
        InetAddress address = InetAddressgetByName(args[]);
        Systemoutprintln(IP:  + addressgetHostAddress());
        switch (addressgetAddress()length)
        {
            case :
                Systemoutprintln(根據byte數組長度判斷這個IP地址是IPv地址!);
                break;
            case :
                Systemoutprintln(根據byte數組長度判斷這個IP地址是IPv地址!);
                break;
        }
        if (address instanceof InetAddress)
            Systemoutprintln(使用instanceof判斷這個IP地址是IPv地址!);
        else if (address instanceof InetAddress)
            Systemoutprintln(使用instanceof判斷這個IP地址是IPv地址!);
    }
}

  測試

  執行如下命令

   java mynetMyIP 

  運行結果

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

  測試

  執行如下命令

   java mynetMyIP 

  運行結果

   IP: :da::b::eff:feb:ce
根據byte數組長度判斷這個IP地址是IPv地址!
使用instanceof判斷這個IP地址是IPv地址!


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25929.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.