Ip 如何解决丢失的服务详细信息(Avahi、ZeroConf)?

Ip 如何解决丢失的服务详细信息(Avahi、ZeroConf)?,ip,ip-address,zeroconf,avahi,Ip,Ip Address,Zeroconf,Avahi,我正在尝试用Avahi编写某种服务浏览器。发现和解决新服务工作正常,但当我试图解决ItemRemoved处理程序中丢失的服务时,我遇到了一个问题。出现“org.freedesktop.Avahi.TimeoutError:已达到超时”错误。我想我做错了,所以我的问题是: 如何在ItemRemoved handler中解析丢失服务的IP地址?如果服务被删除,您将无法解析该服务,因为该服务已不存在。它的记录不再有效 您需要做的是使用DNS-SD服务名称(例如,我的打印服务。\u http.\u tc

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


如何在ItemRemoved handler中解析丢失服务的IP地址?

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

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


理想情况下,您只能在实际需要连接到服务时解析该服务,这既有助于减少网络流量,也有助于确保IP地址在使用时是最新/有效的。一旦解决,如果您将IP与服务名称一起存储,那么您就拥有了您所需要的。我在客户端Linux Mint 18和服务提供商Raspbian 9(stretch)之间遇到了Avahi的同一时间错误问题,但我的问题是间歇性的,但似乎经常是在Rasbian pc重新启动之后

我注意到,当Avahi Discover(客户端上的sudo apt install Avahi Discover)显示服务但没有任何数据时,就是我得到TimeoutError的时候,所以我只是重复“service Avahi daemon restart”(在Avahi服务提供方上),直到我在客户端上的Avahi Discover中得到数据


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

感谢您回答我的问题,以后可能会有用。不幸的是,我无法缓存服务的名称,因为服务记录的格式已强制要求我,我只能存储IP和端口号。为什么您不能将名称的内部缓存保存到以前执行的IP解析中?对于我保存的服务列表,它是一个文件,需要保存在。。。格式。它必须永久存储在硬盘上,因此我必须按照您的建议存储另一个具有IP-SERVICE\u名称解析的文件。这不可能,因为我无法创建任何临时文件。