java.net.InetAddress类

付费节点推荐


免费节点


节点使用教程


 

InetAddress类简介

InetAddress类是Java中用于描述IP地址的类。它在java.net包中。在Java中分别用Inet4Address和Inet6Address类来描述IPv4和IPv6的地址。这两个类都是InetAddress的子类。由于InetAddress没有public的构造方法,因此,要想创建InetAddress对象,必须得依靠它的四个静态方法。

InetAddress的实例对象包含以数字形式保存的IP地址,同时还可能包含主机名(如果使用主机名来获取InetAddress的实例,或者使用数字来构造,并且启用了反向主机名解析的功能)。InetAddress类提供了将主机名解析为IP地址(或反之)的方法。

InetAddress的四个静态方法

  • static InetAddress[] getAllByName(String host)
  • static InetAddress getByAddress(byte[] addr)
  • static InetAddress getByAddress(String host,byte[] addr)
  • static InetAddress getByName(String host)
  • static InetAddress getLocalHost()

注:使用这些方法会抛出出UnknowHostException异常。

一、getLocalHost方法

package cn.bcoder.net_Demo;

import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* 使用getLocalHost可以得到描述本机IP的InetAddress对象
* public static InetAddress getLocalHost() throws UnknownHostException
* @author wangzheng
*
*/
public class InetAddress_getLocalHost {

public static void main(String[] args) throws UnknownHostException {
InetAddress localaddress=InetAddress.getLocalHost(); //static method.
System.out.println(localaddress); // (hostname/ip address)
try {
System.out.println(localaddress.isReachable(5));

//Test whether that address is reachable
} catch (IOException e) {

e.printStackTrace();
}

}

}

运行结果:

bcoder/192.168.191.5
false

二、getByName方法

package cn.bcoder.net_Demo;

import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* 这个方法是InetAddress类最常用的方法。它可以通过指定域名从DNS中得到相应的IP地址
* getByName一个String类型参数,可以通过这个参数指定远程主机的域名,它的定义如下:
* public static InetAddress getByName(String host) throws UnknownHostException
* @author wangzheng
*
*/
public class InetAddress_getByName {

public static void main(String[] args) throws UnknownHostException {
String host="baidu.com";
InetAddress address=InetAddress.getByName(host);
System.out.println(address);

}

}

运行结果:

baidu.com/220.181.57.217

三、getAllByName方法

package cn.bcoder.net_Demo;

import java.net.InetAddress;
import java.net.UnknownHostException;
/**使用getAllByName方法可以从DNS上得到域名对应的所有的IP
* 这个方法返回一个InetAddress类型的数组。这个方法的定义如下:
* public static InetAddress[] getAllByName(String host)
* throws UnknownHostException
* @author wangzheng
*
*/
public class InetAddress_getAllByName {

public static void main(String[] args) throws UnknownHostException {
String host="baidu.com";
InetAddress []address=InetAddress.getAllByName(host);
for(InetAddress net:address)
{
System.out.println(net);
}

}

}

运行结果:

baidu.com/220.181.57.217
baidu.com/180.149.132.47
baidu.com/123.125.114.144

四、getByAddress方法

这个方法必须通过IP地址来创建InetAddress对象,而且IP地址必须是byte数组形式。getByAddress方法有两个重载形式,定义如下:

  • public static InetAddress getByAddress(byte[] addr) throws UnknownHostException
  • public static InetAddress getByAddress(String host, byte[] addr) throws UnknownHostException

package cn.bcoder.net_Demo;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddress_getByAddress {

public static void main(String[] args) throws UnknownHostException {
byte[] addr=new byte[]{(byte)220,(byte)181,(byte)57,(byte)217};
InetAddress host=InetAddress.getByAddress(addr);
System.out.println(host.getHostName());

}

}

运行结果

220.181.57.217

未经允许不得转载:Bcoder资源网 » java.net.InetAddress类

相关推荐

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册