如何解决丢失的服务细节(Avahi、ZeroConf)?

How to resolve lost service details (Avahi, ZeroConf)?

我正在尝试用 Avahi 编写某种服务浏览器。发现和解决新服务工作得很好,但是当我尝试解决在 ItemRemoved 处理程序中丢失的服务时,我遇到了问题。 "org.freedesktop.Avahi.TimeoutError: Timeout reached" 发生错误。我想我做错了,因此我的问题是:

如何在 ItemRemoved 处理程序中解析丢失服务的 IP 地址?

如果服务被删除,您将无法解决它,因为该服务不再存在。它的记录不再有效。

您需要做的是使用 DNS-SD 服务名称(例如我的打印 Service._http._tcp)作为您在内部缓存中存储和删除内容的密钥。

理想情况下,您只在实际需要连接到服务时才解析该服务,这有助于减少网络流量,并确保在您使用它时 IP 地址达到 date/valid。一旦解决,如果您将 IP 与服务名称一起存储,那么您就拥有了您所需要的东西。

我在客户端 Linux Mint 18 和服务提供商 Raspbian 9 (stretch) 之间遇到与 Avahi 相同的 TimeoutError 问题,但我的问题是间歇性的,但似乎经常在重启后出现拉斯比亚电脑的。

我注意到当 Avahi-Discover(客户端上的 sudo apt install avahi-discover)显示服务但没有任何数据时,这就是我收到 TimeoutError 的时候,所以我只是重复 "service avahi-daemon restart" (在 avahi 服务提供商上)直到我在客户端的 avahi-discover 中获取数据。

这不是解决方案,但它是一种修复方法。我需要继续使用 avahi 服务的其他工作,而不是花时间解决 avahi 问题。我在互联网上找到的解决方案很少,但有很多未解决的例子。对我来说,这已经持续了数周,我的调查也是如此。我希望此修复程序有所帮​​助并开始更多讨论来解决这个恼人的问题。