如何测试给定的主机名在Java中是否确实存在?

问题出在某些DNS服务(例如Opendns)上,即使对于不存在的DNS条目也将返回IP地址,因此InetAddress.getByName( host)总是返回某些内容。

但是,host命令能够以某种方式检测到它:

~$ host owqieyuqowiery.com
owqieyuqowiery.com has address 67.215.77.132
Host owqieyuqowiery.com not found: 3(NXDOMAIN)

最佳答案

取决于您所说的“真正存在”。您是说这是一个注册域名,背后是一个网站吗?与给定系统的IP地址相比,主机名只是一种更易于阅读/记忆的形式。换句话说,我可以注册一个域(这只是某处系统的公共可访问的短名称),而不是在该域指向的服务器上托管网站,这不会使该域变得越来越少”真实”。

如果您只想查找A记录,这是一个解决方案:


博客文章:http://mowyourlawn.com/blog/?p=8
代码:http://mowyourlawn.com/files/DomainRecord.java.txt


如果您想知道host所做的事情,这可能会阐明为什么它要执行此操作,那么这里有一些信息:http://linux.die.net/man/1/host基本上,如果失败,则意味着DNS查找失败。即,host连接到该DNS服务器以查找该域返回的结果为零。

同样,host返回的不仅是DNS A记录(这是网站所使用的)。它还将为您提供MX(邮件服务器)记录等。

例如:

$ host google.com
google.com has address 74.125.225.48
google.com has address 74.125.225.49
google.com has address 74.125.225.50
google.com has address 74.125.225.51
google.com has address 74.125.225.52
google.com mail is handled by 20 alt1.aspmx.l.google.com.
google.com mail is handled by 30 alt2.aspmx.l.google.com.
google.com mail is handled by 40 alt3.aspmx.l.google.com.
google.com mail is handled by 50 alt4.aspmx.l.google.com.
google.com mail is handled by 10 aspmx.l.google.com.

10-01 01:49
查看更多