0

我已经从 Qt Quarterly 构建了Qt+Bonjour 集成演示,但我无法理解的一件事是,一次调用DNSServiceProcessResult()就是调用了DNSServiceResolveReply两次回调函数。

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

DNSServiceErrorType err = DNSServiceProcessResult(dnssref);

导致DNSServiceResolveReply我传递给的回调DNSServiceResolve被调用两次。

不同的interfaceIndex是 - 第一次是10000010,第二次是20,但我不知道那是什么意思。

调用之间的所有其他参数都相同(flags当然,kDNSServiceFlagsMoreComing第一次和0第二次除外)。


编辑

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

DNSServiceErrorType err = DNSServiceResolve(&dnssref, 0, 0,
                                            record.serviceName.toUtf8().constData(),
                                            record.registeredType.toUtf8().constData(),
                                            record.replyDomain.toUtf8().constData(),
                                            (DNSServiceResolveReply)bonjourResolveReply, this);
4

1 回答 1

0

我发现了问题,是我路过0interfaceIndex在调用时传递的DNSServiceResolve

文档说:

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

于 2013-11-01T17:13:11.640 回答