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