该方法可以得到远程主机的域名,也可以得到本机名。
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中文网:http://www.javaweb.cc/other/code/181595.shtml
相关推荐
让购买更容易 续费更简单支持多家域名注册接口,域名实时注册,无需人工干涉 更专业 更便捷超强的灾难恢复功能 快速恢复所有站点设置 告别重装系统的漫长设置在线重启服务器和IIS服务功能,无须远程连接服务器 一样...
若远程主机需要访问redis服务器,可以修改redis.conf配置文件 bind字段默认为: bind 127.0.0.1 这样只能本机访问redis 若允许远程主机访问,可注释掉bind行 或者 将bind 127.0.0.1改为: bind 0.0.0.0 在远程主机...
动态域名解析,轻松绑定动态公网IP,稳定网站服务,同时支持多台主机启用负载均衡和故障转移。 网站发布,访问内网,域名解析管理,就用nat123一步搞定。 在公司,小区宽带,出租屋,校园网,网吧,教育网,等网络...
EasyHost虚拟主机系统是针对网络公司销售域名、主机、邮局、数据库等产品时效率低、管理难等问题而自主研发的集产品自动化开通、管理、续费、升级等功能为一体的软件系统。通过多年的改进与运作,软件已具有功能强大...
特有的主机定位功能,使用该功能在不知道远程机器的IP地址或域名的情况下都能迅速连接到远程主机。 QuickIP可用于服务器管理、远程资源共享、网吧机器管理、远程办公、远程教育、排除故障、远程监控等多种...
特有的主机定位功能,使用该功能在不知道远程机器的IP地址或域名的情况下都能迅速连接到远程主机。QuickIP可用于服务器管理、远程资源共享、网吧机器管理、远程办公、远程教育、排除故障、远程监控等多种应用场合。
其中( ftp )命令可用于远程主机之间的文件传送;( ping )命令通过ICMP协议来检测计算机的IP配置是否正确;( telnet )命令用来远程登录到其它主机;( arp )命令可以显示计算机中的IP地址与MAC地址映射表。( ...
虚拟主机系统是针对网络公司销售域名、主机、邮局、数据库等产品时效率低、管理难等问题而自主研发的集产品自动化开通、管理、续费、升级等功能为一体的软件系统。通过多年的改进与运作,软件已具有功能强大、安全...
(25分) 答: DNS实现主机域名和IP地址之间的解析。 假设某个网络的计算机要访问 www.baidu.com 首先,该台计算机的解析器向其本地域名服务器发出请求,查寻"www.baidu.com"的IP 地址,如果没有该纪录,则向上一级...
动态域名解析,轻松绑定动态公网IP,稳定网站服务,同时支持多台主机启用负载均衡和故障转移。 网站发布,访问内网,域名解析管理,就用nat123一步搞定。 在公司,小区宽带,出租屋,校园网,网吧,教育网,等网络...
特有的主机定位功能,使用该功能在不知道远程机器的IP地址或域名的情况下都能迅速连接到远程主机。 QuickIP可用于服务器管理、远程资源共享、网吧机器管理、远程办公、远程教育、排除故障、远程监控等多种应用...
执行权限、在线压缩及解压、自定义错误消息、域名绑定、自定义MIME类型、等。 4、支持纯FTP主机的开设,并支持子FTP帐号的开设及管理。 5、支持WINWEBMAIL企业邮局系统。 6、支持SQL Server数据库和MySQL数据库...
通过域名向远程的DNS服务器获取ip地址,程序中也把通过ip向DNS获取域名的逻辑写完了,但由于程序中把获取类型写死了,因此本程序在没有修改源码的情况下只支持通过域名解析ip的需求。使用方法在程序开头有备注。
环境采用ASP+ACCESS基础开发,简单易用,通过远程API接口与上级服务商通信,让使用者能在简单快捷的操作下轻松完成域名及主机IDC等业务实时申请、开通及续费管理功能. 管理后台:http://您的域名/adm 管理员ID:admin ...
可以和远程主机进程语音对话! 【7】插件功能:用户可以按自己的需要添加和使用插件(如服务端隐身插件,使用服务端隐藏进程、服务、文件等。) 【8】注册表模拟器:远程注册表操作就像操作本地注册表一样方便! 【9...
通过秘奥公司用户注册认证后,主机服务器运行外网通程序,公司异地机构通过ADSL运行“”秘奥软件系列产品“”程序,自动连入公司总部SQLSERVER数据库,实现远程软件网络接入方式。 秘奥远程网络工具 v1.08更新: ...
执行权限、在线压缩及解压、自定义错误消息、域名绑定、自定义MIME类型、等。 4、支持纯FTP主机的开设,并支持子FTP帐号的开设及管理。 5、支持WINWEBMAIL企业邮局系统。 6、支持SQL Server数据库和MySQL数据库...
④ 强大的虚拟主机管理功能,如:站点状态、FTP帐号状态、日志状态、FTP密码、默认文档、自定义错误页面、绑定域名、自定义脚本错误消息 、IP访问限制、关闭/恢复站点执行权限、在线压缩、在线解压缩、.NET版本切换...
版本:2.2.500特别版 为了庆祝本主机程序注册数量超过...支持修改FTP密码,修改绑定域名,修改自定义404错误提示,自主控制主机运行、停止和暂停。(包含了几乎所有的主机管理功能,具体功能函在提供的ASP里有详细说明)
执行权限、在线压缩及解压、自定义错误消息、域名绑定、自定义MIME类型、等。 4、支持纯FTP主机的开设,并支持子FTP帐号的开设及管理。 5、支持WINWEBMAIL企业邮局系统。 6、支持SQL Server数据库和MySQL数据库的...