2013-08-09 3 views
1

나는 참고로이 블로그 문서를 사용하여 Bonjour를 사용하는 방법을 배우려고 노력 해요 :Bonjour DNS-SD 콜백이 호출되지 않습니다. 코드에서 실수는 어디에서 발생합니까?

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 이벤트를 처리하는 메인 루프가 필요합니다. 신중하게 제공 한 링크를보십시오. "콜백 유도"섹션에 있습니다.

관련 문제