2013-08-09 1 views
1

Я пытаюсь научиться использовать Bonjour, используя эту статью блог в качестве ссылки:Bonjour DNS-SD callback не вызывается, где ошибка в моем коде?

http://marknelson.us/2011/10/25/dns-service-discovery-on-windows/

Я загрузить пример проект, связанный в нижней части этой страницы, он работает как шарм. Теперь я пытаюсь воспроизвести открытие сервиса с нуля в моем консольном приложении:

#include <iostream> 
#include <assert.h> 
#include "dns/dns_sd.h" 

class CDnsSd 
{ 
public: 
    bool discoverAsync(); 

private: 
    static void DNSSD_API onDiscoveryFinished (DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, 
           DNSServiceErrorType errorCode, const char *serviceName, const char *regtype, 
           const char *replyDomain, void *context); 
}; 

bool CDnsSd::discoverAsync() 
{ 
    DNSServiceRef client = NULL; 
    const DNSServiceErrorType err = DNSServiceBrowse(&client, 0, 0, ""_services._dns-sd._udp"", "", onDiscoveryFinished, this); 
    return err == kDNSServiceErr_NoError; 
} 

void DNSSD_API CDnsSd::onDiscoveryFinished(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char *serviceName, const char *regtype, const char *replyDomain, void *context) 
{ 
    std::cout << __FUNCTION__; 
} 

void main() 
{ 
    CDnsSd dnsSd; 
    const bool ret = dnsSd.discoverAsync(); 
    assert(ret); 
    Sleep(10000000); 
} 

DNSServiceBrowse возвращается kDNSServiceErr_NoError, но обратный вызов не вызывается. Что не так?

ответ

1

Вам нужны основные события обработки Bonjour. Посмотрите на ссылку, которую вы предоставили тщательно. Он находится в разделе «Вождение обратных вызовов».

Смежные вопросы