通过DNS-SD发现服务后,该主机的地址将如何准确解析,并且花费的时间/开销会大大增加吗?

另外,如果我使用的是JmDNS或Bonjour,则有serviceFoundserviceResolved的回调。如果我只对发布特定服务的设备的IP地址感兴趣,是否有比通过serviceFoundserviceResolved更快或更有效的获取地址的方法?

谢谢

最佳答案

DNS-SD使用多播DNS(MDNS),其工作原理是通过UDP将DNS数据包发送到某个多播地址。网络中所有支持mdns的主机也都监听该地址。它使用UDP,因此开销很低。同样,通过使用大量的缓存,以这样的方式设计客户端,使网络上的聊天量保持最小。

服务发现是一个两步过程。第一步是查找提供某种服务的所有主机的名称(例如打印)。这不会给您IP地址,而是给您MDNS名称(以.local结尾)。这是因为ip可能会更改,而名称不会更改。

服务发现的第二步是通过mdns解析主机的.local名称。您通过多播询问foo.local是谁,foo.local将看到该数据包,并通过广播以其IP地址,端口号和其他信息进行响应。

关于bonjour - mDNS如何精确解析地址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11835782/

10-16 18:28