Можно ли использовать Bonjour из командной строки?

Можно ли использовать Bonjour из командной строки? Например, если я хочу зарегистрировать службу, я нахожу что-то вроде этого: bonjour -register service_name port. Затем Bonjour выделяет бесплатный IP-адрес для моего сервиса. Или, например, если я хочу увидеть список доступных сервисов, я набираю что-то вроде: bonjour -showServices. И затем я получаю список всех доступных сервисов с их именами, IP-адресами и портами. Существует ли что-то подобное?

Я немного смущен доступной документацией. Например здесь, в начале документа я вижу:

Чтобы зарегистрировать свою услугу, позвоните DNSServiceRegister.

Где я должен это назвать? В командной строке? В Java? В С++? В python? Странно, что такого рода контекст не предоставляется.

В общем, я нахожу только общую информацию о zeroconf и Bonjour (что он должен делать). Но я не могу найти что-то конкретное и простое. Как "Привет, мир" примеры использования Bonjour.

Может кто-нибудь помочь мне с этим?

Ответ 1

dns-sd - это программа командной строки, которая работает как в окнах, так и в Mac OS X.

Я часто использую его для туннелирования акций iTunes через Интернет с помощью ssh. Мое типичное использование - dns-sd -P my_music _daap._tcp. local 3690 localhost 127.0.0.1. Это предполагает, что я настроил прослушивание туннеля ssh на localhost port 3690 на порт 3689 хоста, который использует iTunes в чужой сети. Это приводит к тому, что в iTunes отображается значок iTunes с именем "my_music".

Ответ 2

mDNS - это старая версия инструмента dns-sd. Они являются инструментами командной строки, написанными Apple, для взаимодействия с Bonjour.

Вы можете использовать инструмент командной строки, чтобы сделать несколько вещей с Bonjour, но процитировать на странице dns-sd man:

Команда dns-sd предназначена в первую очередь для интерактивного использования. Поскольку его аргументы командной строки и выходной формат могут быть изменены, вызов из оболочки script будет обычно хрупким.

Если вы хотите выполнить операции обнаружения службы DNS с языка сценариев, лучшим способом сделать это не является выполнение команды dns-sd, а затем попытка расшифровки текстового вывода, а вместо этого для прямого вызова DNS- SD API, используя привязку для выбранного вами языка.

Например, если вы программируете в Ruby, вы можете напрямую обращаться к API-интерфейсам DNS-SD, используя пакет dnssd, зарегистрированный в http://rubyforge.org/projects/dnssd/, Аналогичные привязки для других языков также находятся в разработке.

Например, вы спросили о "DNSServiceRegister", который является функцией C:
http://developer.apple.com/library/mac/#documentation/Networking/Reference/DNSServiceDiscovery_CRef/dns_sd_h/index.html#//apple_ref/c/func/DNSServiceRegister

Ответ 3

Да, это конечно возможно. Взгляните на страницу руководства для mDNS