Почему DNSServiceProcessResult дважды вызывает мой обратный вызов?

Я построил Демонстрация интеграции Qt + Bonjour из Qt Quarterly, но одна вещь, которую я не могу обернуть вокруг себя, это то, что один звонок 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);

0

Решение

Я нашел проблему, это было то, что я проходил 0 для interfaceIndex при звонке DNSServiceResolve,

Документы говорят, что:

Если это разрешение вызова
в результате текущей активной операции DNSServiceBrowse (), то
interfaceIndex должен быть индексом, сообщаемым в DNSServiceBrowseReply
Перезвоните. Если для этого решения используется информация, ранее сохраненная
(например, в файле настроек) для дальнейшего использования, затем используйте interfaceIndex 0, потому что
требуемая услуга теперь может быть доступна через другой физический интерфейс.

0

Другие решения

Других решений пока нет …