该方法可以得到远程主机的域名,也可以得到本机名。
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
相关推荐
在SHELL脚本中,我们可以通过`ssh user@remote_host command`来执行远程主机上的命令,其中`user`是远程主机的用户名,`remote_host`是远程主机的IP地址或域名,`command`是要执行的命令。 2. **Perl脚本执行**:...
在这个例子中,`<本地文件或目录>`是你想要上传的文件或目录,`<用户名>`是远程主机的登录用户名,`<远程主机>`是目标服务器的IP地址或域名,`<远程路径>`是远程服务器上你希望存放文件的位置。 2. **执行上传操作...
在IT领域,获取主机域名及其对应的IP地址和Port端口是一项基础且重要的任务。这涉及到网络通信的基础知识,包括互联网协议、域名系统(DNS)以及网络连接的建立。以下是关于这个主题的详细解释: 首先,我们需要理解...
【主机域名】老枪二级域名系统朴素版_lqdomain 是一款专为个人或小型企业设计的二级域名管理系统,旨在帮助用户轻松管理和分配二级域名。在IT行业中,域名系统(DNS,Domain Name System)是互联网的一项核心服务,...
《518主机域名在线管理平台 v1.5:打造高效便捷的云服务管理系统》 在信息化高速发展的今天,高效管理主机、域名以及企业邮局等网络资源成为了企业和个人站长的重要需求。518主机域名在线管理平台 v1.5正是针对这一...
4. **设置SSH站点**:在“SSH站点”下拉菜单中选择第四步中配置的远程主机名称。 5. **编写脚本**:在“预构建脚本”和“后构建脚本”字段中编写要执行的脚本或命令。例如,可以在“预构建脚本”中运行`./pre_test....
【主机域名】PHP多功能域名查询系统_phpchaxun.zip是一个基于PHP编程语言开发的实用工具,主要用于进行域名相关的查询操作。这个系统集成了多种功能,能够帮助用户快速、全面地了解域名的状态和信息,对于域名注册商...
这个【主机域名】菁菁二级域名系统 v1.0_qqymv1.0项目不仅涵盖了Web开发的基本技术,还涉及了网络服务配置、安全性和用户体验等多个方面,对于学习Web开发的初学者来说,是一个非常实用的学习案例。
让购买更容易 续费更简单支持多家域名注册接口,域名实时注册,无需人工干涉 更专业 更便捷超强的灾难恢复功能 快速恢复所有站点设置 告别重装系统的漫长设置在线重启服务器和IIS服务功能,无须远程连接服务器 一样...
【计算机通信网课程设计——到达远程主机的路由探测程序】 在计算机通信网络中,路由探测是理解信息如何在互联网上流动的重要工具。本课程设计旨在深入理解计算机网络和通信网络的工作原理,通过设计一个到达远程...
4. **nslookup**:这个命令用于查询DNS(Domain Name System)记录,以获取远程主机的IP地址或域名的相关信息。 5. **tracert**(或`traceroute`):用于跟踪数据包在网络中的路由,帮助诊断网络延迟或丢包问题。`...
《域名主机系统2003 繁体版》是一个专为Windows Server 2003设计的,用于管理和配置网络域名及主机服务的软件。它集成了多种信息功能,旨在提升网络基础设施的效率和可靠性,是企业和个人管理网络基础服务的重要工具...
7. **文件传输**:虽然PUTTY本身并不直接支持文件传输,但通过其附属程序PSCP(PuTTY Secure Copy)和PSFTP(PuTTY Secure File Transfer Protocol),用户可以方便地在本地和远程主机之间上传和下载文件。...
这个源码包"ASP.NET源码——[主机域名]YIRANHOST虚拟主机管理软件.zip"是专门针对虚拟主机管理的软件,它可能是用于帮助网络管理员或者服务提供商高效地管理他们的服务器资源,包括分配域名、设置用户权限、监控性能...
若远程主机需要访问redis服务器,可以修改redis.conf配置文件 bind字段默认为: bind 127.0.0.1 这样只能本机访问redis 若允许远程主机访问,可注释掉bind行 或者 将bind 127.0.0.1改为: bind 0.0.0.0 在远程主机...
作为“主机域名”标签的一部分,新网互联主机程序元旦版着重强调了对域名的全面管理。这包括但不限于: 1. 域名注册:支持用户快速注册新的域名,覆盖多种顶级域名(如.com, .cn, .net等)。 2. 域名解析:提供便捷...
这里的`user`是远程主机的用户名,`remote_host`是远程主机的IP地址或域名。 **VNC** VNC是一种跨平台的远程桌面协议,它允许用户通过简单的图形界面进行远程访问。在凝思80系统上,你需要安装VNC服务器软件,如`...
你需要在你的远程主机上安装这个客户端,确保每次IP地址改变时,域名都能指向正确的IP。 3. **开启远程桌面或远程访问服务**:对于Windows系统,需要在系统设置中开启远程桌面功能,并确保防火墙允许远程连接。其他...
首先,OpenNetAdmin的核心功能包括域名管理、动态主机配置协议(DHCP)服务、IP地址管理等。这些功能对于网络管理员来说至关重要,能够帮助他们有效地跟踪和控制网络资源,确保网络运行的稳定性和安全性。通过PHP的...
在描述中提到的"[主机域名]Zpanel v2.0完全汉化版_zpanel20hh.rar",表明这个版本已经过汉化处理,意味着所有界面和文档都已翻译成中文,对于中文使用者来说,理解和操作起来会更加方便,消除了语言障碍,使用户能够...