欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中InetAddress類的使用

 更新時間:2023年09月03日 09:52:50   作者:WM之輩  
InetAddress類是Java中用于表示IP地址的類,本文就來介紹一下Java中InetAddress類的使用,具有一定的參考價值,感興趣的可以了解一下

概念:InetAddress類是 Java 中用于表示 IP 地址的類。它提供了一種標準的方法來處理 IP 地址,無論是 IPv4 還是 IPv6 地址。InetAddress 類位于 java.net 包中,是 Java 網(wǎng)絡編程的一部分。

常用方法:

  • getLocalHost():這個方法獲取本地主機的 InetAddress 對象,它表示當前計算機。在你的示例中,你獲取了本地主機的 InetAddress 對象并打印了它。

  • getByName(String host):這個方法根據(jù)指定的主機名或域名獲取對應的 InetAddress 對象。在你的示例中,你使用了兩個不同的主機名(本地主機名和百度域名)來獲取相應的 InetAddress 對象,并打印了它們。

  • getHostName():這個方法用于獲取 InetAddress 對象的主機名。在你的示例中,你使用 host2 對象(百度域名)調用了 getHostName() 方法,以獲取主機名并將其打印出來。

  • getHostAddress():這個方法用于獲取 InetAddress 對象的 IP 地址。在你的示例中,你使用 host2 對象(百度域名)調用了 getHostAddress() 方法,以獲取 IP 地址并將其打印出來。

代碼:

public class API_ {
    public static void main(String[] args) throws UnknownHostException {
        //獲取本機 InetAddress 對象 getLocalHost
        InetAddress localHost = InetAddress.getLocalHost();
        System.out.println(localHost);//LAPTOP-U9K8AF0S/172.21.202.203 獲取到主機的信息(主機名和ip地址)
        //根據(jù)指定主機名/域名獲取 ip 地址對象
        InetAddress host1 = InetAddress.getByName("LAPTOP-U9K8AF0S");//LAPTOP-U9K8AF0S主機名
        System.out.println(host1);//LAPTOP-U9K8AF0S/172.21.202.203,通過主機名來獲取到ip地址,當然這邊輸出的是主機名和ip地址
        System.out.println(host1.getHostAddress());//172.21.202.203,獲取到ip地址
        InetAddress host2 = InetAddress.getByName("www.baidu.com");//www.baidu.com域名
        System.out.println(host2);//www.baidu.com/153.3.238.102,通過域名來獲取ip地址,當然這邊輸出的是域名和ip地址
        System.out.println(host2.getHostAddress());//153.3.238.102,獲取ip地址
    }
}

InetAddress的常用方法

1.public String getHostName()

獲得該InetAddress對象的主機名稱

2.public  String getCanonicalHostName()

獲取此IP地址的全限定域名

3.public bytes[] getHostAddress()

獲取該InetAddress對象對應的IP地址字符串

4.public static InetAddress getLocalHost()

獲取本機對應的InetAddress對象

5.public static InetAddress getByName(String host)

根據(jù)主機獲得對應的InetAddress對象,參數(shù)host可以是IP地址或域名

6.public static InetAddress[] getAllByName(String host)

根據(jù)主機獲得對應的InetAddress對象

7.public static InetAddress getByAddress(byte[] addr)

獲取addr所封裝的IP地址對應的Inet Address對象

8.public boolean isReachable(int timeout)

判斷是否可以到達該地址

示例

1.小DEMO

通過一個demo來演示一下這些方法叭

package TEMP.Temp3;
//使用以上方法的小demo
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetAddressDemo {
    public static void main(String[] args) {
        try{
            //獲取自己本機地址信息
            InetAddress localIp=InetAddress.getLocalHost();
            //1獲取此IP地址的全限定域名
            System.out.println("1.localIp.getCanonicalHostName()="
                    + localIp.getCanonicalHostName());
            //2獲取該InetAddress對象對應的IP地址字符串
            System.out.println("2.localIp.getHostAddress()="
                    + localIp.getHostAddress());
            //3獲得該InetAddress對象的主機名稱
            System.out.println("3.localIp.getHostName()="
                    + localIp.getHostName());
            System.out.println("4.localIp.toString()="+localIp.toString());
            //5.判斷是否可以到達該地址
            System.out.println("5.localIp.isReachable(5000)="
                    + localIp.isReachable(5000));
            System.out.println("====================================");
            System.out.println("====================================");
            //獲取指定域名地址的信息([eg]百度)
            InetAddress baiduip = InetAddress.getByName("www.baidu.com");
            //1獲取此IP地址的全限定域名
            System.out.println("1.baiduIp.getCanonicalHostName()="
                    + baiduip.getCanonicalHostName());
            //2獲取該InetAddress對象對應的IP地址字符串
            System.out.println("2.baiduIp.getHostAddress()="
                    + baiduip.getHostAddress());
            //3獲得該InetAddress對象的主機名稱
            System.out.println("3.baiduIp.getHostName()="
                    + baiduip.getHostName());
            System.out.println("4.baiduIp.toString()="+baiduip.toString());
            //5判斷是否可以到達該地址
            System.out.println("5.baiduIp.isReachable(5000)="
                    + baiduip.isReachable(5000));
            System.out.println("====================================");
            System.out.println("====================================");
            //獲取指定原始IP地址信息
            InetAddress ip = InetAddress.getByAddress(new byte[]{127,0,0,1});
            // InetAddress ip = InetAddress.getByName("127.0.0.1");
            System.out.println("1.ip.getCanonicalHostName()=" + ip.getCanonicalHostName());
            System.out.println("2.ip.getHostAddress()= "+ ip.getHostAddress());
            System.out.println("3.ip.getHostName()="+ ip.getHostName());
            System.out.println("4.ip.toString()="+ ip.toString());
            System.out.println("5.ip.isReachable(5000)="
                    + ip.isReachable(5000));
        }catch(UnknownHostException e){
            e.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
//輸出結果
//        1.localIp.getCanonicalHostName()=shizhanli.lan
//        2.localIp.getHostAddress()=192.168.30.151
//        3.localIp.getHostName()=shizhanli
//        4.localIp.toString()=shizhanli/192.168.30.151
//        5.localIp.isReachable(5000)=true
//        ====================================
//        ====================================
//        1.baiduIp.getCanonicalHostName()=14.215.177.38
//        2.baiduIp.getHostAddress()=14.215.177.38
//        3.baiduIp.getHostName()=www.baidu.com
//        4.baiduIp.toString()=www.baidu.com/14.215.177.38
//        5.baiduIp.isReachable(5000)=true
//        ====================================
//        ====================================
//        1.ip.getCanonicalHostName()=localhost
//        2.ip.getHostAddress()= 127.0.0.1
//        3.ip.getHostName()=localhost
//        4.ip.toString()=localhost/127.0.0.1
//        5.ip.isReachable(5000)=true

2.給定地址,找到主機名稱

package TEMP.Temp3;
//給定地址,找出主機名
import java.net.InetAddress;
import java.net.UnknownHostException;
public class ReverseTest {
    public static void main(String[] args) throws UnknownHostException {
        InetAddress ia = InetAddress.getByName("192.168.30.151");
        System.out.println(ia.getCanonicalHostName());
    }
}
//輸出結果:
//shizhanli.lan

3.找到本地機器的IP地址

package TEMP.Temp3;
//找到本地機器的IP地址
import java.net.InetAddress;
import java.net.UnknownHostException;
public class MyAddress {
    public static void main(String[] args) {
        try{
            InetAddress me = InetAddress.getLocalHost();
            String dottedQuad = me.getHostAddress();//創(chuàng)建一個String類型的變量來接受返回的ip地址
            System.out.println("My address is " + dottedQuad);
        }catch (UnknownHostException ex){
            System.out.println("I'm sorry.I don't know my own address.");
        }
    }
}
//輸出:My address is 192.168.30.151

InetAddress緩存

InetAddress類具有高速緩存以存儲成功以及不成功的主機名解析。

默認情況下,安裝安全管理器時,為了防止DNS欺騙攻擊,主機名正確解決方案的結果將永久緩存。 

當沒有安裝安全管理器時,默認的行為是緩存條目以獲得有限的(實現(xiàn)依賴的)時間段。 

不成功的主機名解析的結果被緩存很短的時間(10秒),以提高性能。

如果不需要默認行為,則可以將Java安全屬性設置為不同的生存時間(TTL)值進行正緩存。 同樣,系統(tǒng)管理員可以在需要時配置不同的緩存緩存TTL值。

Inet4Address和Inet6Address

Java使用了兩個類Inet4Address和Inet6Address,來區(qū)分IPv4地址和IPv6地址.

1.public final class Inet4Address extends InetAddress
2.public final class Inet6Address extends InetAddress

地址類型

有些IP地址和地址模式有特殊的含義。Java提供了許多方法來測試InetAddress對象是否符合其中某個標準。

1.public boolean isAnylocalAdress()

如果是通配地址,方法返回true。通配地址可以匹配本地系統(tǒng)中的任何地址,在IPv4中,通配地址是0.0.0.0。在IPv6中,通配地址是0:0:0:0:0:0:0:0。

2.public boolean isLoopbackAdress()

如果是回送地址,方法返回true?;厮偷刂分苯釉贗P層連接同一臺計算機,而不使用任務物理硬件。在IPv4中,這個地址是127.0.0.1。在IPv6中,這個回送地址是0:0:0:0:0:0:0:1。

3.public boolean isLinkLocalAddress()

如果地址是一個IPv6本地鏈接地址,方法返回true,否則返回false。

4.public boolean isSiteLocalAddress()

如果地址是一個IPv6本地網(wǎng)絡地址,方法返回true,否則返回false。

5.public boolean isMulticastAddress()

如果地址是一個組播地址,方法返回true,否則返回false。

6.public boolean isMCGlobal()

如果地址是全球組播地址,方法返回true,否則返回false。

7.public boolean isMCNodeLocal()

如果地址是一個本地接口組播地址,方法返回true,否則返回false。

8.public boolean isMCLinkLocal()

如果地址是一個子網(wǎng)范圍組播地址,方法返回true,否則返回false。

9.public boolean isMCSiteLocal()

如果地址是一個網(wǎng)站范圍組播地址,方法返回true,否則返回false。

10.public boolean isMCOrgLocal()

如果地址是一個組織范圍組播地址,方法返回true,否則返回false。

測試可達性 

InetAddress類有兩個isReachable()方法,可以測試一個特定節(jié)點對當前主機是否可達哦。

方法①public boolean isReachable(int timeout) throws IOException
方法②public boolean isReachable(NetworkInterface interface, int ttl, int timeout) throws IOException

小小解析:

這些方法嘗試使用traceroute查看指定地址是否可達。如果主機在timeout毫秒內響應,則方法返回true;否則返回false。如果出現(xiàn)網(wǎng)絡錯誤則拋出IOException異常。第二個方法還允許指定從哪個本地網(wǎng)絡接口建立連接,以及“生存時間”。

Object方法

1.public boolean equals(Object o)

若與一個InetAddress對象有相同的IP地址,并不要求這兩個對象有相同的主機名,就返回true,否則返回false。

2.public int hasCode()

只根據(jù)IP地址來計算,不考慮主機名

3.public String toString()

生成的字符串有兩種格式:主機名或點分四段地址。

到此這篇關于Java中InetAddress類的使用的文章就介紹到這了,更多相關Java InetAddress類內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • 老生常談Java中List與ArrayList的區(qū)別

    老生常談Java中List與ArrayList的區(qū)別

    大家都知道List是接口,ArrayList是List接口的一個實現(xiàn)類,接下來通過本文給大家介紹Java中List與ArrayList的區(qū)別,需要的朋友可以參考下
    2022-08-08
  • Java?SpringBoot?中的操作事務

    Java?SpringBoot?中的操作事務

    這篇文章主要介紹了Java?SpringBoot?中的操作事務,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Spring Security基于過濾器實現(xiàn)圖形驗證碼功能

    Spring Security基于過濾器實現(xiàn)圖形驗證碼功能

    驗證碼就是為了防止惡意用戶采用暴力重試的攻擊手段而設置的一種防護措施,接下來在Spring Security的環(huán)境中,我們可以用兩種方案實現(xiàn)圖形驗證碼,具體實現(xiàn)方法跟隨小編一起看看吧
    2021-09-09
  • elasticsearch節(jié)點間通信的基礎transport啟動過程

    elasticsearch節(jié)點間通信的基礎transport啟動過程

    這篇文章主要為大家介紹了elasticsearch節(jié)點間通信的基礎transport啟動過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • 實例解析Java日期格式工具類DateUtil.java

    實例解析Java日期格式工具類DateUtil.java

    本文主要對Java日期格式工具類DateUtil.java進行實例解析。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • java鏈表的頭插法和尾插法詳解

    java鏈表的頭插法和尾插法詳解

    本文介紹了鏈表的基本概念,包括節(jié)點類Listnode和鏈表類Linklist,頭插法和尾插法是兩種常見的插入節(jié)點的方法,分別通過頭指針和游標來實現(xiàn),通過示例代碼和測試,展示了鏈表的創(chuàng)建和操作過程
    2024-12-12
  • Java中自定義類的實現(xiàn)詳解

    Java中自定義類的實現(xiàn)詳解

    自定義類是Java中最基本、也是最重要的組成部分之一,使用者可以根據(jù)需求創(chuàng)建自己的數(shù)據(jù)類型,從而更加高效地構建程序,本文就來為大家詳細講講Java中自定義類的實現(xiàn)與使用吧
    2023-05-05
  • Java開發(fā)中的容器概念、分類與用法深入詳解

    Java開發(fā)中的容器概念、分類與用法深入詳解

    這篇文章主要介紹了Java開發(fā)中的容器概念、分類與用法,結合實例形式較為詳細的分析了java容器的相關概念、分類、使用方法與注意事項,需要的朋友可以參考下
    2017-11-11
  • Jdk中沒有jre文件夾怎么辦?如何解決?

    Jdk中沒有jre文件夾怎么辦?如何解決?

    這篇文章主要介紹了Jdk中沒有jre文件夾怎么辦?如何解決的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 圖文示例詳解Lucene數(shù)據(jù)模型查詢原理

    圖文示例詳解Lucene數(shù)據(jù)模型查詢原理

    這篇文章主要為大家通過圖文示例詳解Lucene數(shù)據(jù)模型查詢原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05

最新評論