为什么DNSServiceProcessResult会两次调用我的回调?

时间:2013-11-01 16:26:38

标签: c++ qt bonjour

我已经从Qt Quarterly中构建了Qt+Bonjour integration demo,但有一点我无法理解,只有一次调用DNSServiceProcessResult()会调用DNSServiceResolveReply回调函数两次

应该叫它一次!我的意思是,这一行:

DNSServiceErrorType err = DNSServiceProcessResult(dnssref);

我传递给DNSServiceResolveReply的{​​{1}}回调结果被调用两次。

DNSServiceResolve不同 - 第一次是interfaceIndex,第二次是10000010,但我不知道这意味着什么。

所有其他参数在调用之间是相同的(当然,20除外,第一次为flags,第二次为kDNSServiceFlagsMoreComing


修改

这就是我调用0函数的方式。

DNSServiceResolve

1 个答案:

答案 0 :(得分:0)

我发现了问题,就是我在调用0时为interfaceIndex传递DNSServiceResolve

文档说:

  

如果此解析呼叫是                    作为当前活动的DNSServiceBrowse()操作的结果,然后是                     interfaceIndex应该是DNSServiceBrowseReply中报告的索引                     打回来。如果此解析呼叫使用先前保存的信息                      (例如在偏好文件中)供以后使用,然后使用interfaceIndex 0,因为                      现在可以通过不同的物理接口访问所需的服务。