• Tags ,
  •         
  • www.breakyizhan.com
  •    

    此类表示IP地址。它表示32位IPv4地址和128位IPv6地址。它是Inet6Address和Inet4Address类的超类。此类的实例由IP地址和通常是主机名组成,具体取决于在创建期间是否执行了主机名解析。
    此类没有构造函数,但是静态方法返回InetAddress类的实例以供一般使用。

    Java中的网络: Java.net.InetAddress类的方法

    • getAddress():将此InetAddress对象的原始IP地址作为数组返回。字节在数组中出现的顺序与IP地址中的顺序相同,即getAddress [0]将包含最高位字节。
      语法: public byte [] getAddress()
    • getHostAddress():以文本形式返回IP地址。
      语法: public String getHostAddress()
    • isAnyLocalAddress():如果此地址表示本地地址,则返回true。
      语法: public boolean isAnyLocalAddress()
    • isLinkLocalAddress():如果此地址是链接本地地址,则返回true。
      语法: public boolean isLinkLocalAddress()
    • isLoopbackAddress():如果此地址是环回地址,则返回true。
      语法: public boolean isLoopbackAddress()
    • isMCGlobal():如果此多播地址具有全局范围,则返回true。
      语法: public boolean isMCGloabal()
    • isMCLinkLocal():如果此多播地址具有链接范围,则返回true。
      语法: public boolean isMCLinkLocal()
    • isMCNodeLocal():如果此多播地址具有节点范围,则返回true。
      语法: public boolean isMCNodeLocal()
    • isMCOrgLocal():如果此多播地址具有组织范围,则返回true。
      语法: public boolean isMCOrgLoacal()
    • isMCSiteLocal():如果此多播地址具有站点范围,则返回true。
      语法: public boolean isMCSiteLocal()
    • isMulticastAddress():如果此地址是IP多播地址,则返回true。多播地址的前4位为1110。
      语法: public boolean isMulticastAddress()
    • isSiteLocalAddress():如果此地址是站点本地地址,则返回true。
      语法: public boolean isSiteLocalAddress()()
    • hashCode():返回与此地址对象关联的哈希码。
      语法: public int hashCode()
    • equals():如果此ip地址与指定对象的IP地址相同,则返回true。Equals()方法在比较时不考虑主机名,仅考虑关联的IP地址。
      语法: public boolean equals(Object obj)
       参数: 
      obj:要与之比较的对象
    // Java program to illustrate 
    // Inetaddress class methods 
    import java.net.Inet4Address; 
    import java.net.InetAddress; 
    import java.net.UnknownHostException; 
    import java.util.Arrays; 
    
    public class inetadd 
    { 
    
    	public static void main(String[] args) throws UnknownHostException 
    		{ 
    		
    		String url = "www.breakyizhan.com"; 
    		byte addr[]={127, 0, 0, 1}; 
    		InetAddress ip1 = Inet4Address.getByName(url); 
    		InetAddress ip2 = InetAddress.getByAddress(addr); 
    		
    		// Following methods checks the property of the thus created object. 
    		// 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)); 
    	} 
    
    } 
    
    

    输出:

    Address : [121,11,0,231]
    Host Address : 121.11.0.231
    isAnyLocalAddress : false
    isLinkLocalAddress : false
    isLoopbackAddress : false
    isMCGlobal : false
    isMCLinkLocal : false
    isMCNodeLocal : false
    isMCOrgLocal : false
    isMCSiteLocal : false
    isMulticastAddress : false
    isSiteLocalAddress : false
    hashCode : 877946458
    ip1==ip2 : false
    • isReachable():如果可以访问此地址,则返回true。如果可以授予权限,则使用ICMP echo请求,否则主机尝试在目标的端口7处建立TCP连接。此方法通常用作各种程序中的前提条件,以避免将来出现Host Unreachable异常。
      语法: public boolean isReachable(int timeout)
                          throws IOException
      参数:
      timeout:调用中止的时间,导致false值。
      抛出:
      IOException:如果发生网络错误
      

      另一个重载的isReachable()方法指定在检查可达性时要使用的网络接口,ttl参数指定echo数据包在退出网络之前所执行的跳数。

    • 语法: public boolean isReachable(NetworkInterface netif,
                        int ttl,
                        int timeout)
                          throws IOException
      参数:
      netif:要使用的网络接口
      ttl:以毫秒为单位的生存时间
      timeout:调用中止的时间,导致false值。
      抛出:
      IOException:如果发生网络错误
      
    • getHostName():返回此IP地址的主机名。如果使用主机名创建此对象而不是返回该对象,则执行反向查找以返回系统配置的主机名。
      语法: public String getHostName()
    • getCanonicalHostName():返回此对象的完全限定域名。如果使用主机名创建此对象而不是返回该对象,则执行反向查找以返回系统配置的主机名。
      语法: public String getCanonicalHostName()
    • toString():将IP地址转换为字符串。它将结果作为主机名/ IP地址返回。
      语法: public String toString()
    • getByAddress():创建InetAddress对象的静态方法之一。它将主机名和IP地址作为参数。主机名可以是“www.geeksforgeeks.org”中的机器名称或其文本IP地址。
      语法: public static InetAddress getByAddress(String host,
                             byte [] addr)
                                      throws UnknownHostException
      参数:
      host:主机名
      addr:此对象的字节地址
      抛出: 
      UnknownHostException:如果IP地址长度非法

      另一个重载方法,它只占用字节地址而没有主机名。它仅返回具有此原始IP地址的InetAddress对象。

    • 语法: public static InetAddress getByAddress(byte [] addr)
                                      throws UnknownHostException
      参数:
      host:主机名
      addr:此对象的字节地址
      抛出: 
      UnknownHostException:如果IP地址长度非法
    • getByName():返回指定主机的IP地址。如果主机是文字IP地址,则仅检查其有效性。
      语法: public static InetAddress getByName(String host)
       参数: 
      host:host name
    • getAllByName():返回给定主机的IP地址数组。
      语法: public static InetAddress [] getAllByName(String host)
       参数: 
      host:host name
    • getLoopbackAddress():返回环回地址。
      语法: public static InetAddress getLoopbackAddress()
      
    • getLocalHost():返回本地主机的IP地址。
      语法: public static InetAddress getLocalHost()
                                      throws UnknownHostException
      抛出:
      UnknownHostException:如果无法将本地主机解析为地址
      
    // Java program to illustrate
    // Inetaddress class methods
    import java.io.IOException;
    import java.net.InetAddress;
    import java.util.Arrays;
     
    public class inetadd2 
    {
        public static void main(String[] args) throws IOException 
        {
         
     
            String url = "www.breakyizhan.com";
            byte addr[] = { 127, 0, 0, 1 };
     
            // getByName() method
            InetAddress ip1 = InetAddress.getByName(url);
            System.out.println("getByName() : " + ip1);
     
            // getByAddress() method
            InetAddress ip2 = InetAddress.getByAddress(addr);
            System.out.println("getByAddress() : " + ip2);
     
            // getLocalHost() method
            InetAddress ip3 = InetAddress.getLocalHost();
            System.out.println("getLocalHost() : " + ip3);
     
            // getLoopbackAddress() method
            InetAddress ip4 = InetAddress.getLoopbackAddress();
            System.out.println("getLoopbackAddress() : " + ip4);
     
            // getAllByName() method - returns all ip addresses
            // associated with google.com
            InetAddress addrs[] = InetAddress.getAllByName("www.google.com");
            System.out.println("Google ip addresses : " + Arrays.toString(addrs));
     
            // isReachable() method
            boolean isreach = ip1.isReachable(50);
            System.out.println("ip1 isReachable() : " + isreach);
     
            // getHostname() method
            String hostname = ip1.getHostName();
            System.out.println("ip1 hostname :" + hostname);
     
            // getCanonicalHostname() method
            System.out.println("ip1 CanonicalHostname : " + ip1.getCanonicalHostName()); 
     
            // toString() method
            System.out.println("ip1 toString() : " + ip1.toString());
        }
    }
    

    输出:

    getByName():www.breakyizhan.com / 121.11.0.231
    getByAddress():/ 127.0.0.1
    getLocalHost():DESKTOP-K4GGDH6 / 192.168.1.5
    getLoopbackAddress():localhost / 127.0.0.1
    Google IP address:[www.google.com/216.58.199.132]
    ip1 isReachable():false
    ip1 hostname:www.breakyizhan.com
    ip1 CanonicalHostname:server-52-84-102-90.del51.r.cloudfront.net
    ip1 toString():www.geeksforgeeks.org / 52.84.102.90
    
    

    以下程序使用InetAddress类来获取给定域名的IP地址。当程序在连接到Internet的系统上运行时,它会给出给定域的IP地址。

    // A Java program to demonstrate working of InetAddress class
    // This program finds IP address for a domain name.
    import java.net.*;
     
    public class GetIPAddress
    {
        public static void main(String args[]) throws Exception
        {
            String url = "www.google.com";
            try
            {
                // Get IP addresses related to the domain
                InetAddress ips[] = InetAddress.getAllByName(url); 
     
                // Display ip addresses
                System.out.println("IP Address(es)");
                for (InetAddress addr:ips)
                    System.out.println(addr.getHostAddress());
            }
            catch(Exception ex)
            {
                System.out.println("host not found");
            }
        }
    }
    

    输出:

    IP Address(es)
    172.217.4.68
    2607:f8b0:4006:809:0:0:0:2004
     
    转载请保留页面地址:https://www.breakyizhan.com/java/6726.html