【问题标题】:Why does this code never discover Bonjour instances (mDNS)?为什么这段代码永远不会发现 Bonjour 实例 (mDNS)?
【发布时间】:2018-10-20 23:23:22
【问题描述】:

我几乎直接从 dns-sd SDK 示例中获取了这段代码,但是它没有找到我搜索的服务。

没有错误,只是没有调用任何回调。这与 Windows 10 x32 上的 Apple Bonjour SDK 相关联。

如果我运行“dns-sd -B _http._tcp”,它会找到很多实例!

void DNSSD_API IterateServiceInstances(DNSServiceRef       sdRef,
                                   DNSServiceFlags     flags,
                                   uint32_t            interfaceIndex,
                                   DNSServiceErrorType errorCode,
                                   const char        * serviceName,
                                   const char        * regtype,
                                   const char        * replyDomain,
                                   void              * context)
{
  puts("IterateServiceInstances is never called!");
}

void DiscoverSegments()
{
  printf("Discovering Segments...");
  DNSServiceRef client = NULL;
  DNSServiceErrorType err;
  err = DNSServiceBrowse(&client,
                        0,
                        0,
                        "_http._tcp",
                        "",
                        IterateServiceInstances,
                        NULL);
  if (kDNSServiceErr_NoError != err)
    printf("Error: Unable to enumerate Bonjour to find devices.\n");    

int main(int argc, char ** argv)
{
    DiscoverSegments();
}

【问题讨论】:

    标签: bonjour mdns


    【解决方案1】:

    因为您的套接字消息循环必须跟踪所有套接字句柄(客户端服务引用)并在打开时将它们全部泵送...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-09
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 2015-01-18
      • 2010-12-02
      相关资源
      最近更新 更多