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

作者: Arvin Chen 分类: Java 来源: Break易站(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
  •   本文标题:Java中的网络: Java.net.InetAddress类 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/6726.html
      微信返利机器人
      免费:淘宝,京东,拼多多优惠券
      腾讯,爱奇艺,优酷的VIP视频免费解析,免费看
      即刻扫描二维码,添加微信机器人!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注