Почему этот код никогда не обнаруживает экземпляры Bonjour (mDNS)? - PullRequest
0 голосов
/ 21 октября 2018

Я взял этот код почти напрямую из примера dns-sd SDK, и тем не менее он не находит службы, которые я ищу.

Нет ошибки, просто не вызывается ни один из обратных вызовов,Это связано с Apple Bonjour SDK в Windows 10 x32.

Если я запускаю «dns-sd -B _http._tcp», он находит много экземпляров!

void DNSSD_API IterateServiceInstances(DNSServiceRef       sdRef,
                                   DNSServiceFlags     flags,
                                   uint32_t            interfaceIndex,
                                   DNSServiceErrorType errorCode,
                                   const char        * serviceName,
                                   const char        * regtype,
                                   const char        * replyDomain,
                                   void              * context)
{
  puts("IterateServiceInstances is never called!");
}

void DiscoverSegments()
{
  printf("Discovering Segments...");
  DNSServiceRef client = NULL;
  DNSServiceErrorType err;
  err = DNSServiceBrowse(&client,
                        0,
                        0,
                        "_http._tcp",
                        "",
                        IterateServiceInstances,
                        NULL);
  if (kDNSServiceErr_NoError != err)
    printf("Error: Unable to enumerate Bonjour to find devices.\n");    

int main(int argc, char ** argv)
{
    DiscoverSegments();
}

1 Ответ

0 голосов
/ 06 ноября 2018

Поскольку ваш цикл сообщений сокетов должен отслеживать ВСЕ дескрипторы сокетов (ссылки на службы клиентов) и прокачивать их все, пока они открыты ...

...