JAVA认证 创建InetAddress对象的四个静态方法
来源:优易学  2011-4-6 12:26:18   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  三、getAllByName方法
  使用getAllByName方法可以从DNS上得到域名对应的所有的IP.这个方法返回一个InetAddress类型的数组。这个方法的定义如下:
  public static InetAddress[] getAllByName(String host) throws UnknownHostException
  与getByName方法一样,当host不存在时,getAllByName也会抛出UnknowHostException异常,getAllByName也不会验证IP地址是否存在。下面的代码演示了getAllByName的用法:
  package inet;
  import java.net.*;
  public class MyInetAddress3
  {
  public static void main(String[] args) throws Exception
  {
  if (args.length == 0)
  return;
  String host = args[0];
  InetAddress addresses[] = InetAddress.getAllByName(host);
  for (InetAddress address : addresses)
  System.out.println(address);
  }
  }
  测试1:远程主机www.csdn.net
  执行如下命令:
  java inet.MyInetAddress3 www.csdn.net
  运行结果:
  www.csdn.net/211.100.26.124
  www.csdn.net/211.100.26.121
  www.csdn.net/211.100.26.122
  www.csdn.net/211.100.26.123
  将上面的运行结果和例程3-2的测试1的运行结果进行比较,可以得出一个结论,getByName方法返回的IP地址就是getAllByName方法返回的第一个IP地址。事实上,getByName的确是这样实现的,getByName的实现代码如下:
  public static InetAddress getByName(String host) throws UnknownHostException
  {
  return InetAddress.getAllByName(host)[0];
  }
  测试2:使用www.csdn.net的一个IP
  执行如下命令:
  java inet.MyInetAddress3 211.100.26.122
  运行结果:
  /211.100.26.122
  四、getByAddress方法
  这个方法必须通过IP地址来创建InetAddress对象,而且IP地址必须是byte数组形式。getByAddress方法有两个重载形式,定义如下:
  public static InetAddress getByAddress(byte[] addr) throws UnknownHostException
  public static InetAddress getByAddress(String host, byte[] addr) throws UnknownHostException
  第一个重载形式只需要传递byte数组形式的IP地址,getByAddress方法并不验证这个IP地址是否存在,只是简单地创建一个 InetAddress对象。addr数组的长度必须是4(IPv4)或16(IPv6),如果是其他长度的byte数组,getByAddress将抛出一个UnknownHostException异常。第二个重载形式多了一个host,这个host和getByName、getAllByName方法中的host的意义不同,getByAddress方法并不使用host在DNS上查找IP地址,这个host只是一个用于表示addr的别名。下面的代码演示了getByAddress的两个重载形式的用法:
  package inet;
  import java.net.*;
  public class MyInetAddress4
  {
  public static void main(String[] args) throws Exception
  {
  byte ip[] = new byte[] { (byte) 141, (byte) 146, 8 , 66};
  InetAddress address1 = InetAddress.getByAddress(ip);
  InetAddress address2 = InetAddress.getByAddress("Oracle官方网站", ip);
  System.out.println(address1);
  System.out.println(address2);
  }
  }
  上面代码的运行结果如下:
  /141.146.8.66
  Oracle官方网站/141.146.8.66
  从上面的运行结果可以看出,getByAddress只是简单地将host参数作为域名放到“/”前面,因此,host可以是任何字符串。

上一页  [1] [2] 

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训