📜  Java Java类

📅  最后修改于: 2022-05-13 01:55:46.737000             🧑  作者: Mango

Java Java类

此类表示 IPv6 地址并扩展 InetAddress 类。此类方法提供了表示和解释 IPv6 地址的便利。
此类的方法接受以下格式的输入:

  1. x:x:x:x:x:x:x:x –这是 IPv6 地址的一般形式,其中每个 x 都可以替换为地址的 16 位十六进制值。请注意,使用此格式时,必须有一个值代替每个“x”。例如,
    4B0C:0:0:0:880C:99A8:4B0:4411
  2. 当地址包含多组 8 位为 '0' 时,可以使用特殊格式来压缩地址。在这种情况下,用 '::' 代替 0 以使地址更短。例如,前面例子中的地址可以写成——
    4B0C::880C:99A8:4B0:4411
  3. x:x:x:x:x:x:dddd –当必须处理混合寻址(IPv6 + IPv4)时,使用第三种格式。在这种情况下,前 12 个字节用于 IPv6 寻址,其余 4 个字节用于 IPv4 寻址。例如,
    F334::40CB:152.16.24.142
  4. ::FFFF:dddd –这种类型的寻址称为IPv4 映射寻址。它用于帮助部署 IPv6 寻址。它允许使用相同的结构和套接字通过 IPv6 和 IPv4 连接的网络进行通信。前 80 位用 '::' 表示的 0 填充。接下来的 32 位都是“1”,剩下的 32 位代表 IPv4 地址。例如,
    ::FFFF:152.16.24.123

方法 :

  1. getByAddress(String host, byte[] addr, int scope_id) :这用于通过将 IPv6 范围 ID 设置为给定值来创建 Inet6Address 对象。返回的对象类似于由 InetAddress.getByAddress(String, byte[]) 创建的对象,并带有有关范围 ID 的附加信息。
    Syntax :public static Inet6Address getByAddress(String host,
                            byte[] addr,
                            int scope_id)
                                     throws UnknownHostException
    Parameters :
    host : host
    addr : raw ip address in network order
    scope_id : scope id of the address
    Throws :
    UnknownHostException : if IP address is of illegal length
  2. getByAddress(String host, byte[] addr, NetworkInterface nif):可以使用重载方法getByAddress() 来指定要与地址一起使用的网络接口。在这种情况下,与网络接口对应的作用域id被用作作用域id。
    Syntax :public static Inet6Address getByAddress(String host,
                            byte[] addr,
                            NetworkInterface nif)
                                     throws UnknownHostException
    Parameters :
    host : host
    addr : raw ip address in network order
    nif : network interface to be associated with this address
    Throws :
    UnknownHostException : if IP address is of illegal length
  3. getScopeId() :返回与此地址关联的范围 ID,如果未设置,则返回 0。
    Syntax : public int getScopeId()
  4. getScopedInterface() :返回与此地址关联的网络接口,如果未设置,则返回 null。
    Syntax : public NetworkInterface getScopedInterface()
  5. getAddress() :以数组形式返回此 InetAddress 对象的原始 IP 地址。字节在数组中出现的顺序与 IP 地址中的相同,即 getAddress[0] 将包含最高顺序字节。
    Syntax : public byte[] getAddress()
  6. getHostAddress() :以文本形式返回 IP 地址。
    Syntax :public String getHostAddress()
  7. isAnyLocalAddress() :如果此地址表示本地地址,则返回 true。
    Syntax :public boolean isAnyLocalAddress()
  8. isLinkLocalAddress() :如果此地址是链接本地地址,则返回 true。
    Syntax :public boolean isLinkLocalAddress()
  9. isLoopbackAddress() :如果此地址是环回地址,则返回 true。
    Syntax :public boolean isLoopbackAddress()
  10. isMCGlobal() :如果此多播地址具有全局范围,则返回 true。
    Syntax :public boolean isMCGloabal()
  11. isMCLinkLocal() :如果此多播地址具有链接范围,则返回 true。
    Syntax :public boolean isMCLinkLocal()
  12. isMCNodeLocal() :如果此多播地址具有节点范围,则返回 true。
    Syntax :public boolean isMCNodeLocal()
  13. isMCOrgLocal() :如果此多播地址具有组织范围,则返回 true。
    Syntax :public boolean isMCOrgLoacal()
  14. isMCSiteLocal() :如果此多播地址具有站点范围,则返回 true。
    Syntax :public boolean isMCSiteLocal()
  15. isMulticastAddress() :如果此地址是 IP 多播地址,则返回 true。多播地址的前 4 位为 1110。
    Syntax :public boolean isMulticastAddress()
  16. isSiteLocalAddress():如果此地址是站点本地地址,则返回 true。
    Syntax :public boolean isSiteLocalAddress()()
  17. hashCode() :返回与此地址对象关联的哈希码。
    Syntax : public int hashCode()
  18. equals() :如果此 IP 地址与指定对象的 IP 地址相同,则返回 true。 Equals() 方法在比较时不考虑主机名,只考虑关联的 IP 地址。
    Syntax : public boolean equals(Object obj)
    Parameters :
    obj : object to compare with

Java实现:

//Java program to illustrate various
//Inet6Address class methods
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;
  
public class inet6add 
{
  
    public static void main(String[] args) throws UnknownHostException 
    {
  
        String host = "localhost";
        byte add[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 };
  
        //getByAddress() method
        Inet6Address ip1 = Inet6Address.getByAddress(host, add, 5);
        Inet6Address ip2 = Inet6Address.getByAddress(null, add, 6);
          
        // Following methods checks the property of the thus created object.
        // getscopeId() method
        System.out.println("Scope Id : " + ip1.getScopeId());
  
        // getScopedInterface() method
        System.out.println("Scoped Interface : " + ip1.getScopedInterface());
  
        // getAddress() method
        System.out.println("Address : " + Arrays.toString(ip1.getAddress()));
  
        // getHostAddress() method
        System.out.println("Host Address : " + ip1.getHostAddress());
  
        // isAnyLocalAddress() method
        System.out.println("isAnyLocalAddress : " + ip1.isAnyLocalAddress());
  
        // isLinkLocalAddress() method
        System.out.println("isLinkLocalAddress : " + ip1.isLinkLocalAddress());
  
        // isLoopbackAddress() method
        System.out.println("isLoopbackAddress : " + ip1.isLoopbackAddress());
  
        // isMCGlobal() method
        System.out.println("isMCGlobal : " + ip1.isMCGlobal());
  
        // isMCLinkLocal() method
        System.out.println("isMCLinkLocal : " + ip1.isMCLinkLocal());
  
        // isMCNodeLocal() method
        System.out.println("isMCNodeLocal : " + ip1.isMCNodeLocal());
  
        // isMCOrgLocal() method
        System.out.println("isMCOrgLocal : " + ip1.isMCOrgLocal());
  
        // isMCSiteLocal() method
        System.out.println("isMCSiteLocal : " + ip1.isMCSiteLocal());
  
        // isMulticastAddress() method
        System.out.println("isMulticastAddress : " + ip1.isMulticastAddress());
  
        // isSiteLocalAddress() method
        System.out.println("isSiteLocalAddress : " + ip1.isSiteLocalAddress());
  
        // hashCode() method
        System.out.println("hashCode : " + ip1.hashCode());
  
        // equals() method
        System.out.println("ip1==ip2 : " + ip1.equals(ip2));
  
    }
  
}

输出 :

Scope Id : 5
Scoped Interface : null
Address : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
Host Address : 0:0:0:0:0:0:0:1%5
isAnyLocalAddress : false
isLinkLocalAddress : false
isLoopbackAddress : true
isMCGlobal : false
isMCLinkLocal : false
isMCNodeLocal : false
isMCOrgLocal : false
isMCSiteLocal : false
isMulticastAddress : false
isSiteLocalAddress : false
hashCode : 1
ip1==ip2 : true