在我的Java应用程序中,如果用户输入IP,我们需要显示主机名,如果给出主机名,那么我们需要显示主机的IP。将IP地址转换为主机名
例如,如果用户输入类似173.194.36.37
的IP地址,则应用程序应显示google.com
,反之亦然。
是否有任何工具可用于执行此操作?
在我的Java应用程序中,如果用户输入IP,我们需要显示主机名,如果给出主机名,那么我们需要显示主机的IP。将IP地址转换为主机名
例如,如果用户输入类似173.194.36.37
的IP地址,则应用程序应显示google.com
,反之亦然。
是否有任何工具可用于执行此操作?
如果您在Java编码,请尝试使用InetAddress
InetAddress addr = InetAddress.getByName("173.194.36.37");
String host = addr.getHostName();
System.out.println(host);
显然,不要忘记UnknownHostException的异常处理。 – ccKep
你在找什么叫做DNS。 This project似乎是你在找什么。
如果存在'InetAddress.getHostName()',则不需要引入第三方库。 –
@PhilippReichart问题说“有没有可用的实用程序”,所以我想为什么不开源第三方库。 –
@PrakashK简单。为什么要通过调用现有方法来实现所有你想要的* 100 *以上的类?更少的运动部件,更不用说出错了。 –
在域名方面,有没有内置的实用工具,没有。你可以通过在InetAddress
上使用getCanonicalHostName()
获得主机的名称(但不是域名) - 这应该有效。这里的最佳答案与DNS Java项目有关,它将为您提供域名。
示例代码来连接,并获取主机的名称来自谷歌的服务器之一如下:
public class GetHostName {
public static void main(String[] args) throws Exception {
InetAddress address = InetAddress.getByAddress(new byte[]{74, 125,(byte) 227, 7});
System.out.println(address.getCanonicalHostName());
}
}
称你的项目SomeKittens看起来像用Java编写的一个完整的DNS服务器,这可能比你需要的更多。看看java.net.InetAddress
:
java.net.InetAddress.getByName("example.com").getHostAddress();
你知道一个IP号码可能有几个主机名吗?例如127.0.0.1 * * localhost和localhost.localdomain – vidstige
@vidstige不与反向DNS。这里IP被映射到一个主机名,即所谓的“规范主机名”。 – glglgl
您无法获得唯一的结果,请参阅http://aruljohn.com/ip2hostname.html,网址为173.194.36.37请参阅bom04s02-in-f5.1e100.net而非google.com! – SjB