亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中InetAddress類的使用

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

概念:InetAddress類是 Java 中用于表示 IP 地址的類。它提供了一種標(biāo)準(zhǔn)的方法來(lái)處理 IP 地址,無(wú)論是 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ī)名和百度域名)來(lái)獲取相應(yīng)的 InetAddress 對(duì)象,并打印了它們。

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

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

代碼:

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,通過(guò)主機(jī)名來(lái)獲取到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,通過(guò)域名來(lái)獲取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

通過(guò)一個(gè)demo來(lái)演示一下這些方法叭

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類型的變量來(lái)接受返回的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)沒(méi)有安裝安全管理器時(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,來(lái)區(qū)分IPv4地址和IPv6地址.

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

地址類型

有些IP地址和地址模式有特殊的含義。Java提供了許多方法來(lái)測(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。回送地址直接在IP層連接同一臺(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地址來(lái)計(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)文章

最新評(píng)論