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

Java中InetAddress類的使用

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

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

常用方法:

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

  • getByName(String host):這個方法根據指定的主機名或域名獲取對應的 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地址)
        //根據指定主機名/域名獲取 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)

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

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

根據主機獲得對應的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欺騙攻擊,主機名正確解決方案的結果將永久緩存。 

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

不成功的主機名解析的結果被緩存很短的時間(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本地網絡地址,方法返回true,否則返回false。

5.public boolean isMulticastAddress()

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

6.public boolean isMCGlobal()

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

7.public boolean isMCNodeLocal()

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

8.public boolean isMCLinkLocal()

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

9.public boolean isMCSiteLocal()

如果地址是一個網站范圍組播地址,方法返回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。如果出現網絡錯誤則拋出IOException異常。第二個方法還允許指定從哪個本地網絡接口建立連接,以及“生存時間”。

Object方法

1.public boolean equals(Object o)

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

2.public int hasCode()

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

3.public String toString()

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

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

相關文章

  • SpringMVC+ZTree實現樹形菜單權限配置的方法

    SpringMVC+ZTree實現樹形菜單權限配置的方法

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

    mybatis一對多兩種mapper寫法實例

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

    Eclipse添加xml文件提示及Hibernate配置學習

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

    JAVA實現線程的三種方法

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

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

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

    一文詳解Redisson分布式鎖底層實現原理

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

    Spring中Bean掃描原理詳情

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

    Java編程實現遞增排序鏈表的合并

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

    RocketMQ在Spring Boot上的基礎使用

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

    在MyBatisPlus中使用@TableField完成字段自動填充的操作

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

最新評論

锦州市| 肥乡县| 文山县| 蓬安县| 罗山县| 三明市| 榆社县| 会宁县| 盐池县| 岗巴县| 娄底市| 太谷县| 华蓥市| 三河市| 汉寿县| 山丹县| 临漳县| 鸡西市| 吉安市| 苏州市| 商丘市| 西林县| 丰都县| 宁波市| 搜索| 昂仁县| 海口市| 辰溪县| 枣庄市| 隆尧县| 天柱县| 新巴尔虎右旗| 枣庄市| 策勒县| 来安县| 芒康县| 宝山区| 大邑县| 琼海市| 奇台县| 温宿县|