如何使用 zeroconf?

如何使用 zeroconf?

我是否在命令行中运行它?我是否将其作为 GUI 应用程序运行?我认为它通过本地网络发现可用的资源并为资源分配地址。接下来会发生什么?此信息是否写入其他应用程序可以读取的某个文件?我可以将 zeroconf 生成的地址放入浏览器的地址行并访问 Web 服务器吗(前提是 Web 服务器正在资源上运行)?

答案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,因为您的浏览器可能可以自行找到这些内容。例如,Mac 上的 Safari 可以查找“Bonjour”菜单。

您还可以使用 zeroconf 查找机器。我的机器可以使用以下.local域名寻址:

ssh mymachine.local

即使机器不在 DNS 中也能工作。对于家庭网络非常有用!

相关内容