InetAddress

Java socket應用—通信
** InetAddress**

1、InetAddress 類用于標示網絡上的硬件資源,標示互聯網協議(IP)地址。

  • IP 地址是 IP 使用的 32 位或 128 位無符號數字,它是一種低級協議,UDP 和 TCP協議都是在它的基礎上構建的。
    

2、InetAddress 類的幾個常用方法:

  • getHostName
    public String getHostName()

獲取此 IP 地址的主機名。如果此 InetAddress 是用主機名創建的,則記憶并返回主機名;否則,將執行反向名稱查找并基于系統配置的名稱查找服務返回結果。
返回:
此 IP 地址的主機名;如果安全檢查不允許操作,則返回 IP 地址的文本表示形式。

  • getAddress
    public byte[] getAddress()

返回此 InetAddress 對象的原始 IP 地址。結果按網絡字節順序:地址的高位字節位于 getAddress()[0] 中。返回:此對象的原始 IP 地址。getHostAddresspublic String getHostAddress()
返回 IP 地址字符串(以文本表現形式)。
返回:
字符串格式的原始 IP 地址。

  • getByAddresspublic
    static InetAddress getByAddress(String host, byte[] addr)throws UnknownHostException

根據提供的主機名和 IP 地址創建 InetAddress。不檢查名稱服務的地址有效性。主機名可以是機器名(如 "java.sun.com"),也可以是其 IP 地址的文本表示形式。
也不在主機名上執行有效性檢查。
如果 addr 指定 IPv4 地址,則返回 Inet4Address 的實例;否則將返回 Inet6Address 的實例。
IPv4 地址 byte 數組的長度必須為 4 個字節,IPv6 byte 數組的長度必須為 16 個字節
參數:
host - 指定主機
addr - 網絡字節順序的原始 IP 地址
返回:
根據原始 IP 地址創建的 InetAddress 對象。

  • getByName
    public static InetAddress getByName(String host) throws UnknownHostException

在給定主機名的情況下確定主機的 IP 地址。主機名可以是機器名(如 "java.sun.com"),也可以是其 IP 地址的文本表示形式。如果提供字面值 IP 地址,則僅檢查地址格式的有效性。
如果主機為 null,則返回表示回送接口地址的 InetAddress。
參數:
host - 指定的主機,或 null。
返回:
給定主機名的 IP 地址。

  • getByAddress
    public static InetAddress getByAddress(byte[] addr) throws UnknownHostException

在給定原始 IP 地址的情況下,返回 InetAddress 對象。參數按網絡字節順序:地址的高位字節位于 getAddress()[0] 中。此方法不會阻塞,即不執行任何反向名稱服務查找操作。
IPv4 地址 byte 數組的長度必須為 4 個字節,IPv6 byte 數組的長度必須為 16 個字節
參數:
addr - 網絡字節順序的原始 IP 地址
返回:
根據原始 IP 地址創建的 InetAddress 對象。

  • getLocalHost
    public static InetAddress getLocalHost() throws UnknownHostException

返回本地主機。如果有安全管理器,則使用本地主機名和 -1 作為參數來調用其 checkConnect 方法,以查看是否允許該操作。如果不允許該操作,則返回表示回送地址的 InetAddress。
返回:
本地主機的 IP 地址。


3. 示例代碼:

public class Test {
     public static void main(String[] args) throws UnknownHostException {
           //獲取本機的InetAddress實例
         InetAddress address=InetAddress.getLocalHost();
           //獲取計算機名
         System.out.println("計算機名:"+address.getHostName());       
        //獲取IP地址
         System.out.println("IP地址:"+address.getHostAddress());
        //獲取字節數組形式的IP地址
         byte[] bytes=address.getAddress();                           
         System.out.println("字節數組形式的IP:"+Arrays.toString(bytes));
         //直接輸出InetAddress對象
         System.out.println(address); 
                        
         InetAddress address2=InetAddress .getByName("PC201607091933");
         System.out.println("獲取計算機名:"+address2.getHostName());
         System.out.println("獲取IP地址:"+address2.getHostAddress());
     }
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容