最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中InetAddress類的使用

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

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

常用方法:

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

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

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

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

代碼:

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

InetAddress的常用方法

1.public String getHostName()

獲得該InetAddress對(duì)象的主機(jī)名稱

2.public  String getCanonicalHostName()

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

3.public bytes[] getHostAddress()

獲取該InetAddress對(duì)象對(duì)應(yīng)的IP地址字符串

4.public static InetAddress getLocalHost()

獲取本機(jī)對(duì)應(yīng)的InetAddress對(duì)象

5.public static InetAddress getByName(String host)

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

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

根據(jù)主機(jī)獲得對(duì)應(yīng)的InetAddress對(duì)象

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

獲取addr所封裝的IP地址對(duì)應(yīng)的Inet Address對(duì)象

8.public boolean isReachable(int timeout)

判斷是否可以到達(dá)該地址

示例

1.小DEMO

通過一個(gè)demo來演示一下這些方法叭

package TEMP.Temp3;
//使用以上方法的小demo
import java.net.InetAddress;
import java.net.UnknownHostException;
public class InetAddressDemo {
    public static void main(String[] args) {
        try{
            //獲取自己本機(jī)地址信息
            InetAddress localIp=InetAddress.getLocalHost();
            //1獲取此IP地址的全限定域名
            System.out.println("1.localIp.getCanonicalHostName()="
                    + localIp.getCanonicalHostName());
            //2獲取該InetAddress對(duì)象對(duì)應(yīng)的IP地址字符串
            System.out.println("2.localIp.getHostAddress()="
                    + localIp.getHostAddress());
            //3獲得該InetAddress對(duì)象的主機(jī)名稱
            System.out.println("3.localIp.getHostName()="
                    + localIp.getHostName());
            System.out.println("4.localIp.toString()="+localIp.toString());
            //5.判斷是否可以到達(dá)該地址
            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對(duì)象對(duì)應(yīng)的IP地址字符串
            System.out.println("2.baiduIp.getHostAddress()="
                    + baiduip.getHostAddress());
            //3獲得該InetAddress對(duì)象的主機(jī)名稱
            System.out.println("3.baiduIp.getHostName()="
                    + baiduip.getHostName());
            System.out.println("4.baiduIp.toString()="+baiduip.toString());
            //5判斷是否可以到達(dá)該地址
            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();
        }
    }
}
//輸出結(jié)果
//        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.給定地址,找到主機(jī)名稱

package TEMP.Temp3;
//給定地址,找出主機(jī)名
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());
    }
}
//輸出結(jié)果:
//shizhanli.lan

3.找到本地機(jī)器的IP地址

package TEMP.Temp3;
//找到本地機(jī)器的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)建一個(gè)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類具有高速緩存以存儲(chǔ)成功以及不成功的主機(jī)名解析。

默認(rèn)情況下,安裝安全管理器時(shí),為了防止DNS欺騙攻擊,主機(jī)名正確解決方案的結(jié)果將永久緩存。 

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

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

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

Inet4Address和Inet6Address

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

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

地址類型

有些IP地址和地址模式有特殊的含義。Java提供了許多方法來測(cè)試InetAddress對(duì)象是否符合其中某個(gè)標(biāo)準(zhǔn)。

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層連接同一臺(tái)計(jì)算機(jī),而不使用任務(wù)物理硬件。在IPv4中,這個(gè)地址是127.0.0.1。在IPv6中,這個(gè)回送地址是0:0:0:0:0:0:0:1。

3.public boolean isLinkLocalAddress()

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

4.public boolean isSiteLocalAddress()

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

5.public boolean isMulticastAddress()

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

6.public boolean isMCGlobal()

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

7.public boolean isMCNodeLocal()

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

8.public boolean isMCLinkLocal()

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

9.public boolean isMCSiteLocal()

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

10.public boolean isMCOrgLocal()

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

測(cè)試可達(dá)性 

InetAddress類有兩個(gè)isReachable()方法,可以測(cè)試一個(gè)特定節(jié)點(diǎn)對(duì)當(dāng)前主機(jī)是否可達(dá)哦。

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

小小解析:

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

Object方法

1.public boolean equals(Object o)

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

2.public int hasCode()

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

3.public String toString()

生成的字符串有兩種格式:主機(jī)名或點(diǎn)分四段地址。

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

相關(guān)文章

  • SpringMVC+ZTree實(shí)現(xiàn)樹形菜單權(quán)限配置的方法

    SpringMVC+ZTree實(shí)現(xiàn)樹形菜單權(quán)限配置的方法

    本篇文章主要介紹了SpringMVC+ZTree實(shí)現(xiàn)樹形菜單權(quán)限配置的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • mybatis一對(duì)多兩種mapper寫法實(shí)例

    mybatis一對(duì)多兩種mapper寫法實(shí)例

    這篇文章主要介紹了mybatis一對(duì)多兩種mapper寫法實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Eclipse添加xml文件提示及Hibernate配置學(xué)習(xí)

    Eclipse添加xml文件提示及Hibernate配置學(xué)習(xí)

    文件提示功能在開發(fā)過程中很實(shí)用的,本文實(shí)現(xiàn)了一個(gè)Eclipse添加xml文件提示,感興趣的朋友可以了解下啊,希望本文對(duì)你有所幫助
    2013-01-01
  • JAVA實(shí)現(xiàn)線程的三種方法

    JAVA實(shí)現(xiàn)線程的三種方法

    這篇文章介紹了JAVA實(shí)現(xiàn)線程的三種方法,有需要的朋友可以參考一下
    2013-09-09
  • resty mail的簡單發(fā)送郵件方法

    resty mail的簡單發(fā)送郵件方法

    這篇文章主要為大家介紹了簡單的resty mail發(fā)送郵件方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-03-03
  • 一文詳解Redisson分布式鎖底層實(shí)現(xiàn)原理

    一文詳解Redisson分布式鎖底層實(shí)現(xiàn)原理

    這篇文章主要詳細(xì)介紹了Redisson分布式鎖底層實(shí)現(xiàn)原理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Spring中Bean掃描原理詳情

    Spring中Bean掃描原理詳情

    這篇文章主要介紹了Spring中Bean掃描原理詳情,文章為榮啊主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • Java編程實(shí)現(xiàn)遞增排序鏈表的合并

    Java編程實(shí)現(xiàn)遞增排序鏈表的合并

    這篇文章主要介紹了Java編程實(shí)現(xiàn)遞增排序鏈表的合并,兩種方法,代碼分享給大家,供需要的朋友參考。
    2017-10-10
  • RocketMQ在Spring Boot上的基礎(chǔ)使用

    RocketMQ在Spring Boot上的基礎(chǔ)使用

    本文主要介紹了RocketMQ在Spring Boot上的基礎(chǔ)使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • 在MyBatisPlus中使用@TableField完成字段自動(dòng)填充的操作

    在MyBatisPlus中使用@TableField完成字段自動(dòng)填充的操作

    這篇文章主要介紹了在MyBatisPlus中使用@TableField完成字段自動(dòng)填充的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評(píng)論

绍兴县| 商城县| 明星| 屏东县| 彩票| 济宁市| 通许县| 岚皋县| 淅川县| 阜平县| 西城区| 井陉县| 汉川市| 犍为县| 玉山县| 靖宇县| 金华市| 墨脱县| 兴安盟| 自贡市| 尼勒克县| 平阴县| 当涂县| 会东县| 吉林市| 电白县| 巨鹿县| 沂水县| 喜德县| 浑源县| 虎林市| 尤溪县| 武冈市| 贡嘎县| 山西省| 建湖县| 正阳县| 垫江县| 始兴县| 上蔡县| 宿州市|