android解析ip地址,android – 如何从IP地址解析网络主机名

我正在研究基于wifi的聊天引擎,我能够通过跟随this链接检索连接到当前wifi网络的主机列表,现在获得了具有ip地址的设备列表但我需要来自ip地址的主机名并尝试以下

InetAddress inetAddr;

try {

inetAddr = InetAddress.getByName(host.hostname);

String hostname = inetAddr.getHostName();

String canonicalHostname = inetAddr.getCanonicalHostName();

holder.computerName.setText("Canonical : "+host.hostname);

} catch (Exception e) {

e.printStackTrace();

}

这里主机名和规范主机名都显示ip地址而不是主机名.

请帮我解决这个问题.

解决方法:

我想你可以这样做:

try {

Log.d("ReverseDNS", "Reverse DNS for 8.8.8.8 is: " + InetAddress.getByName("8.8.8.8").getHostName());

} catch (UnknownHostException e) {

Log.e("ReverseDNS", "Oh no, 8.8.8.8 has no reverse DNS record!");

}

一些额外的东西:

>考虑到这是一个可能需要很长时间的操作(理解为长时间几秒),因此绝对建议在Thread或AsyncTask中完成.

>除响应时间外,这是一个网络操作,因此您需要在UI线程之外执行此操作.

>还要记住,每个主机都有一个关联的IP地址,但并非每个IP地址都有一个反向主机,因此操作可能会失败,您也需要处理它.

>您要查询的DNS服务器是您的提供商之一(或者如果您计划在不同客户端中运行此服务提供商,则为客户提供商).这意味着并非每个结果都是一样的.例如,您的DNS服务器可能无法解析IP的反向主机,而其他DNS服务器可能无法解析.

标签:android-networking,android,ip,android-wifi,hostname

来源: https://codeday.me/bug/20191002/1842491.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值