Java API IP类简单介绍

来源:互联网 发布:最新的网络用语 编辑:程序博客网 时间:2024/05/16 04:47

1、概述


  Java中是面向对象的编程,所谓“万物即是对象”,即使是简单的字符串,封装成String对象后,也提供了丰富而强大函数,方便我们便捷的开发程序。

  如果你还未了解Java的编程特点,可能觉的IP地址表示为四段字节码的文本形式就足够了,但是你在学习网络编程的过程中,发现所有函数传入或者返回IP时,都不提供字符串形式,所以有必要了解IP地址在Java API中提供的类及相关方法。


2、IP类及对象


Java API提供IP对应类为:InetAddress。


包路径java.net.InetAddress。


对象的创建:也许你没有了解之前,肯定以为是通过一个InetAddress类的构造器,它接收一个字符串IP形式,但是你查阅API文档会发现并是这样。该类提供两个静态方法可以返回InetAddress对象。分别是:

1、static InetAddress getByName(String host)

  host可以为IP地址的字符串形式,如本机地址“127.0.0.1”或者是“192.168.1.1”等;还可以是主机名(也可以称为域名),如本机主机名“localhost”和“www.google.com”。如果提供字面值 IP 地址,则仅检查地址格式的有效性,不检查该IP地址在网络上是否存在。

  主机名是为了解决IP地址难以记忆的缺点,所以使用更加人性化的文字标识,比如google的服务器IP地址220.255.2.153,相对于域名“www.google.com”来说不容易记住。

  但是所有通过域名的网络请求,最终会通过本地DNS和公共DNS服务器,把域名解析为IP地址,网际层只封装IP地址。

2、static InetAddress getLocalHost()

  该方法会返回本机的IP地址对象,与getByName("127.0.01")和getByName("localhost")是同样的效果。


3、常用方法。

String getHostAddress():返回IP地址文本表现形式。

String getHostName():返回IP地址对应的主机名,会在本地Hosts文件下去搜索是否有对应的主机名,如果没有,则显示IP地址文本形式,有,则显示主机名。


4、简单的示例

package com.example.network;import java.net.InetAddress;import java.net.UnknownHostException;public class IPDemo {public static void main(String[] args) throws UnknownHostException  {getLocalIP();getIPByName("www.google.com");//检查本地hosts文件和DNS服务器上的对应IP,没有,则报错,参照最后一条。getIPByName("220.255.2.153");//检查本地hosts文件和DNS服务器上的对应域名,没有,则返回字符串形式。getIPByName("1.1.1.1");//不会报错,只检查地址格式的有效性getIPByName("www.google11.com");//报错,DNS无法解析该域名。}private static void getLocalIP() throws UnknownHostException {//1、返回本机IP对象,当查找不到本机IP地址,会抛出UnknownHostException异常InetAddress ip = InetAddress.getLocalHost();//2、查看IP地址字符串形式String ip_str = ip.getHostAddress();System.out.println(ip_str);//3.查看IP地址对应的主机名,优先检查计算机属性中计算机名,然后是本地hosts文件中,最后是公共DNS服务器。String hostName = ip.getHostName();System.out.println(hostName);}private static void getIPByName(String host) throws UnknownHostException  {/* * 1、主机名可以是机器名(如 "java.sun.com"),也可以是其 IP 地址的文本表示形式。如果提供字面值 IP 地址,则仅检查地址格式的有效性。 * 如果是主机名,查找不到该主机名,则抛出异常UnknownHostException。 */InetAddress ip = InetAddress.getByName(host);//2、查看IP地址字符串形式,如果第一步骤中传入主机名,则该方法会检查本地hosts文件及公共DNS服务器,以便返回对应的IP地址;否则,返回IP地址的字符串表现形式。String ip_str = ip.getHostAddress();System.out.println(ip_str);//3.查看IP地址对应的主机名,如果第一步骤中传入IP地址,则该方法会检查本地hosts文件及公共DNS服务器,如果没有则返回IP地址的字符串表现形式;否则,返回主机名。String hostName = ip.getHostName();System.out.println(hostName);}}
输出:

192.168.1.102PC201507260924220.255.2.153www.google.com220.255.2.153chatenabled.mail.google.com1.1.1.11.1.1.1Exception in thread "main" java.net.UnknownHostException: www.google11.comat java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:849)at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1200)at java.net.InetAddress.getAllByName0(InetAddress.java:1153)at java.net.InetAddress.getAllByName(InetAddress.java:1083)at java.net.InetAddress.getAllByName(InetAddress.java:1019)at java.net.InetAddress.getByName(InetAddress.java:969)at com.example.network.IPDemo.getIPByName(IPDemo.java:40)at com.example.network.IPDemo.main(IPDemo.java:19)




0 0
原创粉丝点击