【问题标题】:How to resolve lost service details (Avahi, ZeroConf)?如何解决丢失的服务详细信息(Avahi、ZeroConf)?
【发布时间】:2015-03-04 11:45:28
【问题描述】:

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

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

【问题讨论】:

    标签: ip ip-address zeroconf avahi


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回答,以后会很有用。不幸的是,我无法缓存服务的名称,因为服务记录的格式是强加给我的,我只能存储 IP 和端口号。
    • 为什么您不能将名称的内部缓存保存到您之前执行的 IP 解析?
    • 如果是我保存的服务列表,它是一个需要保存在 中的文件; ; ... 格式。它必须永久存储在硬盘驱动器上,因此我必须按照您的建议存储另一个具有 IP-SERVICE_NAME 分辨率的文件。这不可能,因为我无法创建任何临时文件。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-23
      • 2017-07-16
      • 1970-01-01
      • 2010-12-27
      • 2013-11-01
      • 2020-08-03
      • 2013-03-22
      • 2016-12-31
      相关资源
      最近更新 更多