Android中的Bonjour本地主机名

时间:2017-12-15 15:46:49

标签: android bonjour

如何让Android网络请求查找在Bonjour注册的本地域名?

尝试使用Volley获取数据时出现此错误。

java.net.UnknownHostException: Unable to resolve host "xxxxx.local": No address associated with hostname

2 个答案:

答案 0 :(得分:0)

如果您控制整个网络堆栈,则可以通过Android的NsdManager执行DNS服务发现(DNS-SD)。我从文档中推荐此指南:

  

https://developer.android.com/training/connect-devices-wirelessly/nsd

简而言之,可以归结为:

mNsdManager.discoverServices(
    SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);

您可以通过检查Mac上dns-sd的响应来交叉引用您要解析的服务:

$ dns-sd -Z . .
_http._tcp                                      PTR     myserver._http._tcp
myserver._http._tcp                             SRV     0 0 80 myserver.local. ; Replace with unicast FQDN of target host
myserver._http._tcp                             TXT     ""

在NsdManager.DiscoveryListener回调中,您可以从NsdServiceInfo.getHost()获取相应的IP地址。

答案 1 :(得分:-1)

您是否尝试过使用localhost的IP? 127.0.0.1或10.0.2.2:80?