Как использовать 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. Очень полезно для домашней сети!