Я пытаюсь научиться использовать 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
, но обратный вызов не вызывается. Что не так?