DatagramPacket.getAddress()。getHostName()阻止了我的线程

时间:2012-08-03 11:49:23

标签: java android sockets broadcast datagram

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

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

我该如何解决这个问题?

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

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

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

要获取发件人的IP,只使用myDatagramPacket.getAddress(),它返回一个表示IP的InetAddress(而不是在其上调用getHostName(),使用getHostAddress()和/或toString())