为什么Java的InetAddress类没有将ipv6地址解析为其FQDN?

use*_*877 6 java dns networking fqdn ipv6

我正在尝试使用Java编写一个简单的程序,给定版本为4或6的IP,将返回其FQDN.给定ipv4地址时,以下代码可以正常工作,但只有在输入ipv6地址时才会返回给定的地址.

InetAddress inet;
try { inet = InetAddress.getByName(theIpAddress); }
catch(UnknownHostException e) { System.out.println("Unknown Host"); return; }

System.out.println(inet.getHostAddress(););
System.out.println(inet.getHostName(););
Run Code Online (Sandbox Code Playgroud)

每当我输入ipv6时,getHostName()将只返回相同的ipv6,即使我知道ipv6将解析为FQDN.此外,如果我输入ipv6主机名,例如ipv6.google.com,而不是ipAddress,则会发生异常.

我对这些东西不熟悉所以非常感谢任何帮助.谢谢.

rob*_*x44 1

尝试inet.getCanonicalHostName();“获取此 IP 地址的完全限定域名”。

如果您使用 构造 InetAddress InetAddress.getByName()getHostName()将返回您构造它所用的内容。 getCanonicalHostName()强制进行反向名称查找。