2013-11-01 68 views
0

我已經建立了從Qt的季刊Qt+Bonjour integration demo,但有一件事我不能換我的頭周圍就是要DNSServiceProcessResult()單個呼叫調用DNSServiceResolveReply回調函數的兩倍。爲什麼DNSServiceProcessResult調用我的回調兩次?

應該調用它一次!我的意思是,這一條線上:

DNSServiceErrorType err = DNSServiceProcessResult(dnssref); 

DNSServiceResolveReply回調我傳遞給DNSServiceResolve結果被調用兩次。

interfaceIndex是不同的 - 第一次是10000010,第二次是20,但我不知道這意味着什麼。

調用之間的所有其他參數是相同的(除了flags,當然這是第一次kDNSServiceFlagsMoreComing0第二次)。


編輯

這是我如何調用DNSServiceResolve功能。

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

回答

0

我發現這個問題,這是我經過0interfaceIndex調用DNSServiceResolve時。

的文檔說:

如果這個決心呼叫 作爲當前活動DNSServiceBrowse()操作的結果,那麼 interfaceIndex應在DNSServiceBrowseReply 回調報告的指標。如果此呼叫的決心使用供以後使用先前保存 信息(例如,在偏好文件),然後使用interfaceIndex 0,因爲 期望的服務現在可以經由不同的物理接口是可到達的。

相關問題