Технические вопросы и ответы QA1337

Обнаружение всех распространенных типов службы Bonjour

Q: Действительно ли возможно динамично обнаружить каждый тип службы Bonjour, распространяемый в сети?

A: Действительно ли возможно динамично обнаружить каждый тип службы Bonjour, распространяемый в сети?

Да. Устройства, работающие mDNSResponder-58.6 (Mac OS X 10.3.4) или позже, будут реагировать на «метазапрос» Перечисления Типа Службы, описанный в Разделе 10 из спецификации DNS-SD. При выпуске Многоадресной передачи DNS PTR записывает запрос для имени «_services. _ dns-sd. _ udp.local». возвратит список типов службы, распространяемых в локальной сети.

Запросы для «_services. _ dns-sd. _ udp.local». ведите себя несколько по-другому, чем стандарт mDNS запросы. Нормальные mDNS долгосрочные запросы возвратят события ADD/REMOVE, поскольку записи зарегистрированы и вычеркнуты из списка, однако, метазапрос перечисления типа службы не будет сказан о событиях REMOVE, когда служба будет вычеркнута из списка. Иначе, метазапрос ведет себя тождественно к стандарту mDNS запрос. Это получит события REMOVE, когда сетевой интерфейс будет отключен или если запись PTR истекает от кэша естественно.

Можно выпустить этот метазапрос при помощи DNSServiceQueryRecord от основанного на сокете DNSServiceDiscovery API, расположенного в /usr/include/dns_sd.h. Для каждого распространяемого типа службы DNS-SD обратный вызов возвратит DNS запись PTR, содержащая тип службы и домен. Например, если кто-то распространяет службу HTTP на локальную сеть, DNSServiceQueryRecord обратный вызов возвратит запись PTR, указывающую на «_http. _ tcp.local»..

Пример кода DNSServiceMetaQuery показывает, как выпустить метазапрос перечисления типа службы.



История версии документа


ДатаПримечания
01.06.2004

Новый документ, объясняющий, как обнаружить все типы службы Bonjour, распространяемые в локальной сети.