Введение в открытие службы DNS
Этот документ описывает, как использовать Открытие Службы DNS API в Вашей программе.
Открытие Службы DNS API помогает Вам выполнить три основных задачи:
Регистрация службы
Просмотр для служб
Разрешение службы называет к именам хоста
В поддержку этих основных задач этот API может непосредственно помочь Вам в выполнении двух вспомогательных задач:
Перечисление доменов (считающий рекомендуемым домены службы)
Обновление регистрации (изменяющий регистрационные данные DNS динамично)
Открытие Службы DNS API является частью Добрый день, реализацией Apple нулевой конфигурации, объединяющей (ZEROCONF) в сеть. Для обзора того, как Добрый день работает, считайте Добрый день Обзор до использования Открытия Службы DNS.
Кто должен считать этот документ?
Этот документ предназначается для разработчиков, хотящих использовать Добрый день в их приложениях. Существует много причин использовать Открытие Службы DNS API по Сетевым службам APIs (NSNetServices и CFNetServices):
Вы пишете приложения стиля BSD, которые не должны будут соединяться с высокоуровневыми платформами.
Вы пишете межплатформенные программы (Открытие Службы DNS, API доступен на iOS, OS X, Windows и других совместимых операционных системах POSIX).
Вы пишете приложение, требующее низкоуровневых подпрограмм особого назначения, таких как регистрация отдельных записей или способности использовать только определенные сетевые интерфейсы.
Если ни одна из тех функций не необходима для Вашей программы, она настоятельно рекомендована это, Вы смотрите на NSNetService и CFNetService сначала.
Организация этого документа
Этот документ содержит следующие статьи:
Регистрация и Завершение Службы объясняют, как зарегистрировать и завершить Вашу службу с
mDNSResponder
демон.Просмотр для Сетевых служб описывает, как просмотреть для служб.
Разрешение Текущего адреса Службы объясняет, как получить информацию о службе на основе ее имени, типа регистрации и домена.
Перечисление Доменов помогает Вам понять, как счесть домены рекомендуемыми для регистрации и просмотра.
Используя Открытие Службы DNS в Windows дает обзор для того, как реализовать Открытие Службы DNS в приложении на базе Windows.
Перед запуском
Следующие несколько абзацев описывают некоторые вещи, которые необходимо знать об этом API прежде, чем попробовать выполнить любую из задач.
Большинство функций в этом API не возвращает все свои данные с помощью их функционального возврата или блока параметра. Вместо этого они требуют, чтобы Вы обеспечили функцию обратного вызова, которая может обработать данные, отправленные асинхронно.
Вашу функцию обратного вызова можно вызвать многократно в ответ на единственный вызов функции с Вашей стороны. Например, Вы могли бы запросить список доступных служб. Ваш обратный вызов вызвали бы один раз для каждой доступной службы, соответствующей Ваш запрос, тогда вызванный снова каждый раз, когда служба соответствия добавлена или удалена.
Некоторые функции возвращают коды ошибки обычным способом, но многие не делают. В этих случаях любой код ошибки и флаги состояния отправляются в Вашу функцию обратного вызова как часть асинхронного ответа, вместе с — или вместо — любые возвращенные данные.
Большинство функций в этом API использует единый набор параметров для описания служб. Необходимо будет предоставить некоторых или все эти параметры, в зависимости от цели вызова. Во многих случаях Вы обеспечите некоторые параметры, такие как домен и тип службы, и Ваша функция обратного вызова получит данные, соответствующие другим параметрам, таким как имя службы службы соответствия.
Вот является список общих параметров, требуемых Открытием Службы DNS API:
Имя — человекочитаемое имя службы, такой как
Sales Laser Printer
.Тип регистрации — тип службы, сопровождаемый протоколом, называет и разделенный точкой (
.
) ;_printer._tcp
пример.Домен — домен для службы, обычно
NULL
.
Полное доменное имя — имя, однозначно определяющее службу. Полное доменное имя является связью имени, типа регистрации и домена. Поскольку точка (
.
) символ используется в качестве разделителя, любых точечных символов в части имени полного доменного имени должен оставить символ наклонной черты влево (\
). Если имя содержит литеральную наклонную черту влево, наклонной черты влево должен также оставить символ наклонной черты влево. Вот пример полного доменного имени:Dr\.Smith’s Home\\Office Server._http._tcp.local
.Порт — номер порта для службы в сетевом порядке байтов.
Текстовая запись — дополнительная запись, содержащая любую дополнительную информацию, которая может быть необходима для использования службы, такой как имя очереди печати.
Требования
Открытие Службы DNS API требует служб mDNSResponder
демон. OS X (версия 10.2 и позже) и iOS включает mDNSResponder
демон как часть операционной системы. Apple также обеспечивает исходный код для mDNSResponder
демон на сайте Apple С открытым исходным кодом. Этот API также доступен в Добрый день для Windows и (если mDNSResponder
установлен) в Linux, Солярисе и операционных системах FreeBSD.
Ограничения
Открытие Службы DNS API не выполняет установку доступа к сети для служб. Точно так же Открытие Службы DNS API не обеспечивает сетевое соединение от приложения до службы. Это позволяет приложениям просматривать для служб или просить их по имени, и обеспечивает IP-адрес, порт, и т.д. Можно использовать сокеты BSD для соединения со службой по сети.
Для получения дополнительной информации
Для получения дополнительной информации о Добрый день, включая ссылки к стандартам, спецификации и ресурсы, видят http://developer .apple.com/networking/bonjour и читают Добрый день Обзор.
Документация относительно основанного на Java Открытия Службы DNS API доступна в Ссылке Java Открытия Службы DNS.
Для получения информации о динамическом обновлении и совместно использованных секретах, посмотрите http://www .ietf.org/rfc/rfc2136.txt и http://www .ietf.org/rfc/rfc2845.txt, соответственно.
Для получения информации Преобразование сетевых адресов (NAT), посмотрите http://www .ietf.org/rfc/rfc3022.txt, и для получения информации об автоматическом отображении порта NAT, посмотрите http://files .dns-sd.org/draft-nat-port-mapping.txt.
Для примера кода, загрузка mDNSResponder
исходный код на сайте Apple С открытым исходным кодом.