一旦通过DNS-SD发现了服务,该主机的地址究竟是如何解析的,是否会花费更多的时间/开销?
此外,如果我使用的是JmDNS或Bonjour,serviceFound和serviceResolved都会有回调。如果我只对发布某个服务的设备的IP地址感兴趣,有没有比同时通过serviceFound和serviceResolved获取地址的更快/更有效的方法
谢谢
发布于 2012-09-04 01:04:22
DNS-SD使用多播DNS (MDNS),其工作原理是通过UDP将DNS数据包发送到特定的多播地址。网络中所有支持mdns的主机也监听该地址。它使用UDP,所以开销很低。此外,客户端的设计方式是通过使用广泛的缓存将网络上的聊天数量保持在最低限度。
服务发现是一个两步的过程。第一步是找到提供某种服务(例如打印)的所有主机的名称。这还不会为您提供ip地址,而是为您提供mdns名称(以.local结尾)。这是因为ip可能会改变,而名称不会改变。
服务发现的第二步是通过mdns解析主机的.local名称。您通过多播询问foo.local是谁,foo.local将看到该数据包,并通过广播响应其ip地址、端口号和其他信息。
https://stackoverflow.com/questions/11835782
复制相似问题