美文网首页
Java网络编程 - InetAddress类

Java网络编程 - InetAddress类

作者: BlueSkyBlue | 来源:发表于2018-07-25 09:01 被阅读7次

获取本地主机名和IP地址

InetAddress类表示网络地址。该类隶属于java.net包内。它有两个子类:

  • Inet4Address
  • Inet6Address

IP地址是IP使用的32位或128位无符号数字,它是一种低级协议。UDP和TCP协议都是在它的基础上构建的。

方法名 方法简介 返回类
getLocalHost() 返回本地主机。 static Inet4Address
getHostAddress() 返回IP地址字符串。 String
getHostName() 获取此IP地址的主机名。 String
getByAddress(byte[] addr) 在给定原始IP地址的情况下。创建InetAddress对象 InetAddress

例:

public static void main(String[] args) throws UnknownHostException {
        InetAddress i = Inet4Address.getLocalHost();
        System.out.println(i.toString());
        //获取IP地址
        System.out.println(i.getHostAddress());
        //获取主机名。
        System.out.println(i.getHostName());
}

最后打印出来的是本地的主机名和地址。

获取任意一台主机IP地址

getByName(String hostname)方法,可以通过IP地址获取主机名。最后返回一个InetAddress对象。

public static void main(String[] args) throws UnknownHostException {
        InetAddress ia = InetAddress.getByName("192.168.56.1");
        System.out.println(ia.getHostAddress());
        System.out.println(ia.getHostName());
}

如果IP地址和对应的主机名没有在网络上。IP地址可以找到,但主机名无法解析成功。此时getHostName返回的依然是IP地址。

getHostName(String name)的参数Name也可以是主机名,例如getHostName("www.google.com")。但是最好是输入IP地址,因为主机名-IP地址需要经过DNS解析。比较浪费时间。

public static void main(String[] args) throws UnknownHostException {
        InetAddress ia = InetAddress.getByName("www.google.com");
        System.out.println(ia.getHostAddress());
        System.out.println(ia.getHostName());
}

由于Google主机服务器有多台,所以返回的IP地址不唯一。Google主机服务器也可能做了映射,使多个服务器使用一个IP地址。

有一个方法叫getAllByName(String hostname)。该方法返回一个InetAddress数组。该方法在给定主机名的情况下根据系统上配置的名称服务返回其IP地址所组成的数组。

相关文章

网友评论

      本文标题:Java网络编程 - InetAddress类

      本文链接:https://www.haomeiwen.com/subject/mhbumftx.html