Могу ли я использовать Bonjour из командной строки? - PullRequest
14 голосов
/ 04 марта 2010

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

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

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

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

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

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

Ответы [ 3 ]

26 голосов
/ 05 марта 2010

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

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

6 голосов
/ 01 декабря 2011

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

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

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

Если вы хотите выполнить операции обнаружения службы 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

1 голос
/ 04 марта 2010

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

...