背景:
我在本地networking上运行Linux服务器,既充当networking服务器又充当中央通信服务器。 该服务器与系统中的多个节点进行通信。 节点初始化后,节点将其IP地址发送给中央通信服务器。 但是,为了知道发送该IP地址的目的地,节点需要知道服务器的IP地址。 为了解决服务器问题,我决定使用mDNS。
看来在服务器上安装avahi可以为Linux服务器组播。
sudo apt-get install avahi-daemon
然后,可以将服务器的主机名更改为多播将服务器的IP地址parsing到的位置
hostname.local
问题1:
为了使这个scheme起作用,节点是否还必须安装avahi-daemon? 如果是这样,有没有办法绕过这个,或以另一种方式启用节点的多播。 我很犹豫,因为我不确定微控制器是否有能力安装这个守护进程,因为ESP8226被用作WiFi模块。 (我知道ESP8226确实支持mDNS,我只是不知道如何)。
问题2:
如果用户试图访问Web服务器上的页面,他们是否可以在浏览器中inputmDNS名称来发出请求? 或者他们还必须安装avahi-daemon? 如果它是一个Windows计算机试图访问应用程序,我不能保证他们将内置此function。再次,如果需要,是否有办法解决没有守护进程?
更新:ESP8226确实支持mDNS,但是客户端mDNS不是内置的。然而,这里有ESP8226的客户端mDNS库: https : //github.com/mrdunk/esp8266_mdns
问题1:不幸的是,您必须安装avahi或bonjour(win / mac)才能使用mDNS。 祝你好运,为微控制器编译avahi! 我从来没有使用mDNS与无线networking,但它是非常正常的组播stream量。
问题2:您可以使用mDNS的名称作为http的东西,avahi将其与DNS完全集成。 我实际上是用它来加载NFS共享。 请记住,如果您使用虚拟主机,添加hostname.local作为虚拟主机的别名或其他东西。