Android 安卓中的本地主机名

Android 安卓中的本地主机名,android,bonjour,Android,Bonjour,如何使Android网络请求查找成为在Bonjour注册的本地域名 我在尝试使用截击获取数据时遇到此错误 java.net.UnknownHostException: Unable to resolve host "xxxxx.local": No address associated with hostname 你试过本地主机的IP吗?127.0.0.1或10.0.2.2:80?如果您控制整个网络堆栈,您可以通过Android的NsdManager执行DNS服务发现(DNS-SD)。我从文档

如何使Android网络请求查找成为在Bonjour注册的本地域名

我在尝试使用截击获取数据时遇到此错误

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

你试过本地主机的IP吗?127.0.0.1或10.0.2.2:80?

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

简言之,它归结为:

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获得相应的IP地址,但对于我尝试执行的操作并不实用。我需要使用主机名,但可以进行查找以获取IP,然后执行网络请求。InetAddress.getByName(“…”)不起作用。谢谢你的文章!因为问题是关于查找Bonjour主机名。基本上“无法解析主机”意味着DNS查找失败。你能在浏览器中访问xxxxx.local(或在shell中ping)吗?在iOS、macOS和windows上,我能。在安卓系统上我不能。可能是相关的:而且还没有尝试过,但DNS-SD似乎是解决这个问题的一个关键词,因为Bonjour使用MDN。