java - DatagramPacket.getAddress().getHostName() 正在阻塞我的线程

标签 java android sockets broadcast datagram

我有一个从设备接收数据的线程。当到达 myDatagramPacket.getAddress().getHostName() 行时,它会停止 5-6 秒,然后继续。

当我尝试像“192.168.1.163”这样的硬编码 IP 时,它正在不间断地工作。

如何解决这个问题?

有什么建议吗?

最佳答案

该行看起来执行反向 DNS 查找,这自然会很慢。

您可以尝试在不进行查找的情况下修改逻辑,或者如果不可能,请尝试缓存调用结果(这样您就不必多次支付时间)。

要获取发送者的 IP,请仅使用 myDatagramPacket.getAddress(),它返回代表 IP 的 InetAddress(而不是对其调用 getHostName(),而是使用 getHostAddress() 和/或 toString()) .

关于java - DatagramPacket.getAddress().getHostName() 正在阻塞我的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11795167/

相关文章:

node.js - Socket.io 客户端切换到 xhr-polling 时出现错误

node.js - 如何在 Chrome 中使用 native WebSocket 库重新连接套接字

java - 将spymemcached Java 客户端GetFuture 适配为Guava ListenableFuture

java - EJBCA API 示例

java - 本地开发 PC 上的弹性负载均衡器

android - GIS:在 Google Map 的数据层上使用 .tif

java - 将 CKEditor 与 JSP 集成

android - 我可以使用 Gradle 缩小 dex 中的 65k 方法限制吗?

android - 在Android应用程序中居中对齐时如何找到 ImageView 的高度和宽度?

ios - SocketIOClient-Swift : Unable to authenticate socket server