我已经从Qt Quarterly中构建了Qt+Bonjour integration demo,但有一点我无法理解,只有一次调用DNSServiceProcessResult()
会调用DNSServiceResolveReply
回调函数两次
应该叫它一次!我的意思是,这一行:
DNSServiceErrorType err = DNSServiceProcessResult(dnssref);
我传递给DNSServiceResolveReply
的{{1}}回调结果被调用两次。
DNSServiceResolve
不同 - 第一次是interfaceIndex
,第二次是10000010
,但我不知道这意味着什么。
所有其他参数在调用之间是相同的(当然,20
除外,第一次为flags
,第二次为kDNSServiceFlagsMoreComing
。
修改
这就是我调用0
函数的方式。
DNSServiceResolve
答案 0 :(得分:0)
我发现了问题,就是我在调用0
时为interfaceIndex
传递DNSServiceResolve
。
文档说:
如果此解析呼叫是 作为当前活动的DNSServiceBrowse()操作的结果,然后是 interfaceIndex应该是DNSServiceBrowseReply中报告的索引 打回来。如果此解析呼叫使用先前保存的信息 (例如在偏好文件中)供以后使用,然后使用interfaceIndex 0,因为 现在可以通过不同的物理接口访问所需的服务。