但是当我调用 DNSServiceBrowse 时,我得到的错误响应是 DNS 服务调用失败 -65563,“后台守护程序未运行”。
您不能在 Android 中运行守护程序。请参阅:Android 守护进程
为了在嵌入式实现中使用 mdnsresponder,您必须直接与 mDNSCore 通信。请参阅本自述文件的“工作原理”部分,位于 [1]。
我该如何解决这个问题?
查看 [2] 中 mDNSEmbedded.h 中的“注意”部分 基本上,您需要使用 [3] 中的 dnssd_clientshim.c,而不是通过守护进程进行通信。这使您可以"still use the preferred dns_sd.h APIs by linking in "dnssd_clientshim.c", which implements the standard "dns_sd.h" API calls, allocates any required storage using malloc(), and then calls through to the low-level malloc-free mDNSCore routines"
注意:似乎 dnssd_clientshim.c 有一些拼写错误和缺少参考,这将阻止编译,因此您需要在构建时执行补丁(参见 [4] 和 [5])。看来您仍然需要在编译时包含 dnssd_clientlib.c ,否则您将在 TXTRecord 函数引用中遇到构建错误。
[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ]