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

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

1 ответ

Обычно на каждой машине, предлагающей сервис, запускается демон 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. Очень полезно для домашней сети!

Другие вопросы по тегам