知识大全 使用InetAddress类的getHostName方法获得域

Posted 域名

篇首语:智者的智慧是一种不平常的常识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用InetAddress类的getHostName方法获得域相关的知识,希望对你有一定的参考价值。

Java网络编程从入门到精通(5):使用InetAddress类的getHostName方法获得域  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  该方法可以得到远程主机的域名 也可以得到本机名 getHostName方法的定义如下

   public String getHostName()

  下面是三种创建InetAddress对象的方式 在这三种方式中 getHostName返回的值是不同的

   使用getLocalHost方法创建InetAddress对象

  如果InetAddress对象是用getLocalHost方法创建的 getHostName返回的是本机名 如下面的代码所示

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

   使用域名创建InetAddress对象

  用域名作为getByName和getAllByName方法的参数调用这两个方法后 系统会自动记住这个域名 当调用getHostName方法时 就无需再访问DNS服务器 而是直接将这个域名返回 如下面的代码所示

   InetAddress address = InetAddress getByName( );System out println(address getHostName());  // 无需访问DNS服务器 直接返回域名

   使用IP地址创建InetAddress对象

  使用IP地址创建InetAddress对象时(getByName getAllByName和getByAddress方法都可以通过IP地址创建InetAddress对象) 并不需要访问DNS服务器 因此 通过DNS服务器查找域名的工作就由getHostName方法来完成 如果这个IP地址不存在或DNS服务器不允许进行IP地址和域名的映射 getHostName方法就直接返回这个IP地址 如下面的代码所示

   InetAddress address = InetAddress getByName( );System out println(address getHostName());  // 需要访问DNS服务器才能得到域名InetAddress address = InetAddress getByName( );  // IP地址不存在System out println(address getHostName());  // 直接返回IP地址

  从上面的三种情况可以看出 只有通过使用IP地址创建的InetAddress对象调用getHostName方法时才访问DNS服务器 在其他情况 getHostName方法并不会访问DNS服务器 而是直接将域名或本机名返回 下面的代码演示了在不同情况下如何使用getHostName方法 并计算了各种情况所需的毫秒数

   package mynet;    import  *;    public class DomainName        public static void main(String[] args) throws Exception                long time =  ;          // 得到本机名          InetAddress address  = InetAddress getLocalHost();          System out println( 本机名    + address getHostName());          // 直接返回域名          InetAddress address  = InetAddress getByName( );          time = System currentTimeMillis();          System out print( 直接得到域名    + address getHostName());          System out println(   所用时间                           + String valueOf(System currentTimeMillis()   time) +   毫秒 );          // 通过DNS查找域名          InetAddress address  = InetAddress getByName( );          System out println( address :    + address );  // 域名为空          time = System currentTimeMillis();          System out print( 通过DNS查找域名    + address getHostName());          System out println(   所用时间 + String valueOf(System currentTimeMillis()   time)+   毫秒 );          System out println( address :    + address );  // 同时输出域名和IP地址        

  运行结果

   本机名  ComputerName直接得到域名    所用时间  毫秒address :  / 通过DNS查找域名  bigip o  所用时间  毫秒address :  bigip o/

cha138/Article/program/Java/hx/201311/26413

相关参考

知识大全 Java获取网络主机信息

Java获取网络主机信息  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  InetAddress类

知识大全 java里面如何创建一个内部类的实例?

  要想使用new生成一个内部类的实例需要先指向一个外部类的实例也就是先生成外部类的实例因为内部类可以调用外部类的人员成员当没有外部类实例的时候也就没有这些成员的内存空间内部类在实例化的时候调用外部类

知识大全 类的基本概念

      Java程序的基本单位是类类的定义可以看作是建立对象的原形你建立类之后就可用它来建立许多你需要的对象Java把每一个可执行的成分都变成类使面向对象发展到极点  类的基本定义成员函数如下  

知识大全 泉州师范是大类招生,专业分流吗。其二批的英语专业是属于师范类的还是非师范类的

泉州师范是大类招生,专业分流吗。其二批的英语专业是属于师范类的还是非师范类的?漳州师范是福建省大类招生的试点单位。简单的说就是你进去了英语专业大一时大家都修一样的课,到大二时根据你大一的体会和学习能力

知识大全 Java容器类的线程安全

Java容器类的线程安全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java容器类的关系图 

知识大全 类的实例创建

  矩形类Rectangle中也许你想把矩形的相关信息写入类如  intwidthheight;    当然你还可以写入其它信息但或许长和宽对简单的矩形来说已足够了现在类的定义如下所示  public

知识大全 在JAVA中定义类的结构

在JAVA中定义类的结构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  类的基本概念    Ja

知识大全 类的集合--包

  作者印佛西地   包(package)的基本概念  一旦你创建了一个类并想重复地使用它那么把它放在一个包中将是非常有效的包(package)是一组类的集合例如Java本身提供了许多包如javajo

知识大全 探索空类的应用和性能分支

  只要在源类中的子对象没有任何虚拟成员函数或者非静止数据成员那么空base类的优化就不会为它分配任何存储空间在这个小技巧中我将会告诉大家一些空类的应用和性能的分支    看看下面的类    clas

知识大全 DataGrid类的层次结构[2]

C#高级编程:DataGrid类的层次结构[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n