web-dev-qa-db-ja.com

zeroconfの使い方は?

コマンドラインで実行しますか? GUIアプリケーションとして実行しますか?ローカルネットワークを介して利用可能なリソースを検出し、リソースにアドレスを割り当てると思います。次は何が起こる?この情報は、他のアプリケーションで読み取ることができるファイルに書き込まれていますか? zeroconfによって生成されたアドレスをブラウザのアドレス行に入れてWebサーバーに到達できますか(Webサーバーがリソースで実行されている場合)?

4
Roman

通常、サービスを提供する各マシンは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にない場合でも機能します。ホームネットワークに非常に便利です!

6
Peter Westlake