java - getCanonicalHostName 非常慢

标签 java ip-address hostname

InetAddress.getByName(ipAddress).getLocalHost().getCanonicalHostName();

上面这行代码大约需要 10 秒来执行。

我在 etc\hosts 文件中添加了 IP 和主机名,但仍然没有任何变化。

getCanonicalHostName 如何工作?我可以获得该方法的实现吗?

如何提高这行代码的效率?

最佳答案

在我的例子中,问题是由 Npcap 引起的驱动程序,我用于 Wireshark。在 Windows Control Panel\Network and Internet\Network Connections 中禁用 Npcap Loopback Adapter 修复了我遇到的 9 秒延迟。

延迟本身发生在Inet6AddressImpl.getHostByAddr(byte[] addr)方法中(由InetAddress.getCanonicalHostName()调用),这是原生的,所以很难说出与 DNS 相关的其他情况。

关于java - getCanonicalHostName 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47031687/

相关文章:

java - 数据库的性能是哪一项?

java - 编写一个 while 循环来查找 1 到 9999 之间 7 的倍数

c# - 如何使用 C# 在 LAN 中查找可用的 IP 地址

linux - 跨多个服务器对文件使用 Linux 命令

linux - 主机名未正确显示在命令提示符和系统日志消息中

java - 为什么我会收到此错误?线程 "main"java.lang.NoClassDefFoundError : "中出现异常

java - 将 CompletableFuture 结果传递给另一个

java - 服务器地址和客户端地址不同

linux - 按机器名称浏览家庭 Intranet

linux - 我的 Linux 系统无法识别主机名。我该如何解决?