Назад | Перейти на главную страницу

Как пользоваться zeroconf?

Запустить ли его в командной строке? Могу ли я запустить его как приложение с графическим интерфейсом? Я думаю, он обнаруживает ресурсы, доступные через локальную сеть, и назначает им адреса. Что происходит дальше? Записана ли эта информация в какой-то файл, который я могу прочитать другим приложением? Могу ли я поместить адреса, сгенерированные zeroconf, в адресную строку моего браузера и подключиться к веб-серверу (при условии, что веб-сервер работает на ресурсе)?

Обычно на каждой машине, предлагающей службу, будет запущен демон Zeroconf, и клиенты будут искать его в сети. В этом ящике Debian, например, есть процесс под названием avahi-daemon. Чтобы рекламировать службу, программа обращается к демону. Легкий способ сделать это с помощью программы avahi-publish, который регистрирует службу у демона:

avahi-publish -s myservice _http._tcp  12345 "Here it is"

Пока эта программа не завершится, avahi-browse найдет это:

$ avahi-browse -t _http._tcp
= eth0 IPv4 myservice                       Web Site             local
   hostname = [mymachine.local]
   address = [192.168.1.123]
   port = [12345]
   txt = ["Here it is"]

В большинстве случаев вы не хотите запускать отдельную программу только для публикации службы, поэтому у вашего демона будет небольшой код для этого. Вот несколько хороших примеров того, как это сделать на Python. Есть простая функция, которую вы вызываете так:

# Downloaded from http://stackp.online.fr/?p=35
# Thanks to Pierre
#
from ZeroconfService import ZeroconfService
import time

service = ZeroconfService(name="Joe's awesome FTP server",
                          port=3000,  stype="_ftp._tcp")
service.publish()

Опять же, в большинстве случаев вам не нужно запускать avahi-browse, потому что ваш браузер, вероятно, сам найдет эти вещи. Safari может, например, на Mac - найдите меню «Bonjour».

Вы также можете найти машины с помощью zeroconf. Моя машина адресуется с помощью .local домен:

ssh mymachine.local

будет работать, даже если машина не в DNS. Очень полезно для домашней сети!