Уровень совместимости Avahi DNS_SD не выполняется просмотра обратного вызова

Фон

Я работаю над библиотекой кроссплатформы Zeroconf / Bonjour / DNS-SD для HASKELL и решил, что моим лучшим ставкам будет нацелиться на dns_sd.h API. Под Linux реализация этого интерфейса обеспечивается Avahi , что утверждает, что поддерживает подмножество API Bonjour.

Проблема

Как здравомыслие проверка моей библиотеки, я написал небольшую программу тестирования в C, которая просто использует голые кости API. Он просматривает любой сервис в сети типа _http._tcp , печатает сообщение, как только оно видит один, а затем умирает:

#include 
#include 
#include 

void cb(DNSServiceRef sdRef,
        DNSServiceFlags flags,
        uint32_t interfaceIndex,
        DNSServiceErrorType errorCode,
        const char *serviceName,
        const char *regtype,
        const char *replyDomain,
        void *context) {
  printf("called!\n");
}

int main() {
  DNSServiceRef sd = malloc(sizeof(DNSServiceRef));
  const char *regtype = "_http._tcp";
  DNSServiceErrorType err1 = DNSServiceBrowse(&sd, 0, 0, regtype, NULL, &cb, NULL);
  printf("err1=%d\n", err1);
  DNSServiceErrorType err2 = DNSServiceProcessResult(sd);
  printf("err2=%d\n", err2);
  return 0;
}

на моем Mac, эта программа тестирования работает нормально как в C, а также Эквивалентный Haskell (он находит мой принтер; захватывающий!):

$ gcc test.c -o test
$ ./test
err1=0
called!
err2=0

Но на моем машине Linux, программа ругает меня до выхода, не вызывая обратный вызов:

$ gcc test.c -o test -ldns_sd
$ ./test
*** WARNING *** The program 'test' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see 
err1=0
err2=0

Вопросы

  1. - Avahi DNS_SD Слой совместимости все еще подходящая цель для кроссплатформенной привязки? Или это предупреждающее сообщение достаточно серьезно относится к использованию собственного AVAHI API, который я должен рассмотреть ретаргетинг?
  2. Что такое состояние искусства для кроссплатформенной Zeroconf в C?
5
задан acfoltzer 12 September 2011 в 16:34
поделиться