当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

Java网络编程从入门到精通(5):操纵InetAddress类的getHostNam[Java编程]

赞助商链接



  本文“Java网络编程从入门到精通(5):操纵InetAddress类的getHostNam[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

该办法可以得到远程主机的域名,也可以得到本机名.getHostName办法的定义以下:

public String getHostName()

下面是三种成立InetAddress对象的方法,在这三种方法中,getHostName返回的值是差别的.

1.利用getLocalHost办法成立InetAddress对象

假如InetAddress对象是用getLocalHost办法成立的,getHostName返回的是本机名.以下面的代码所示:

InetAddress address = InetAddress.getLocalHost();
System.out.println(address.getHostName());  // 输出本机名

2.利用域名成立InetAddress对象

用域名作为getByName和getAllByName办法的参数调用这两个办法后,系统会自动记着这个域名.当调用getHostName办法时,就无需再拜候DNS服务器,而是直接将这个域名返回.以下面的代码所示:

InetAddress address = InetAddress.getByName("www.oracle.com");
System.out.println(address.getHostName());  // 无需拜候DNS服务器,直接返回域名

3.利用IP地址成立InetAddress对象

利用IP地址成立InetAddress对象时(getByName、getAllByName和getByAddress办法都可以通过IP地址成立InetAddress对象),并不需求拜候DNS服务器.因此,通过DNS服务器查找域名的工作就由getHostName办法来完成.假如这个IP地址不存在或DNS服务器不答应举行IP地址和域名的映射,getHostName办法就直接返回这个IP地址.以下面的代码所示:

InetAddress address = InetAddress.getByName("141.146.8.66");
System.out.println(address.getHostName());  // 需求拜候DNS服务器才能得到域名
InetAddress address = InetAddress.getByName("1.2.3.4");  // IP地址不存在
System.out.println(address.getHostName());  // 直接返回IP地址

从上面的三种情形可以看出,只有通过利用IP地址成立的InetAddress对象调用getHostName办法时才拜候DNS服务器.在其他情形,getHostName办法并不会拜候DNS服务器,而是直接将域名或本机名返回.下面的代码演示了在差别情形下若何利用getHostName办法,并计算了各种情形所需的毫秒数.

package mynet;

  import java.net.*;

  public class DomainName
  {
      public static void main(String[] args) throws Exception
      {
          long time = 0;
          // 得到本机名
          InetAddress address1 = InetAddress.getLocalHost();
          System.out.println("本机名: " + address1.getHostName());
          // 直接返回域名
          InetAddress address2 = InetAddress.getByName("www.oracle.com");
          time = System.currentTimeMillis();
          System.out.print("直接得到域名: " + address2.getHostName());
          System.out.println("  所用时间:"
                          + String.valueOf(System.currentTimeMillis() - time) + " 毫秒");
          // 通过DNS查找域名
          InetAddress address3 = InetAddress.getByName("141.146.8.66");
          System.out.println("address3:  " + address3);  // 域名为空
          time = System.currentTimeMillis();
          System.out.print("通过DNS查找域名: " + address3.getHostName());
          System.out.println("  所用时间:" + String.valueOf(System.currentTimeMillis() - time)+ " 毫秒");
          System.out.println("address3:  " + address3);  // 同时输出域名和IP地址
      }
  }

运行后果:

本机名: ComputerName
直接得到域名: www.oracle.com  所用时间:0 毫秒
address3:  /141.146.8.66
通过DNS查找域名: bigip-otn-portal.oracle.com  所用时间:92 毫秒
address3:  bigip-otn-portal.oracle.com/141.146.8.66

从上面的运行后果可以看出,第一个毫秒数是0,而第二个毫秒数是92.这说时,利用域名成立的InetAddress对象在利用getHostName办法时并不拜候DNS服务器,而利用IP地址成立的InetAddress对象在利用getHostName办法时需求拜候DNS服务器.关于第三个毫秒数,大概多次运行DomainName后会越来越小,这是因为DNS服务器的缓存的来由.但普通这个数城市比0大.大概有很多人会问,第二行和第四行得到的域名怎么不一样,其实www.oracle.com和bigip-otn-portal.oracle.com都是oracle的域名,我们也可以通过http:// bigip-otn-portal.oracle.com来拜候oracle的官方网站.至于这两个域名有什么辨别,将在下面的文章中谈论.


  以上是“Java网络编程从入门到精通(5):操纵InetAddress类的getHostNam[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .