通过DNS-SD发现服务后,该主机的地址究竟如何解决?是否需要更多时间/开销?mDNS究竟如何解析地址?
另外,如果我使用的是JmDNS或Bonjour,则有serviceFound
和serviceResolved
的回叫。如果我只是对发布特定服务的设备的IP地址感兴趣,那么获取地址的方式是否比通过serviceFound
和serviceResolved
这两种方法获得更快速/更高效的方式?
由于
通过DNS-SD发现服务后,该主机的地址究竟如何解决?是否需要更多时间/开销?mDNS究竟如何解析地址?
另外,如果我使用的是JmDNS或Bonjour,则有serviceFound
和serviceResolved
的回叫。如果我只是对发布特定服务的设备的IP地址感兴趣,那么获取地址的方式是否比通过serviceFound
和serviceResolved
这两种方法获得更快速/更高效的方式?
由于
DNS-SD使用多播DNS(MDNS),其工作原理是在UDP上发送DNS数据包发送到某个组播地址。网络中所有支持mdns的主机也会监听这个地址。它使用UDP,因此开销很低。此外,通过使用大量缓存,客户端的设计方式可以将网络上的聊天数量保持在最低限度。
服务发现是一个两步过程。第一步是找到提供某种服务(例如打印)的所有主机的名称。这将不会给你的IP地址,而是它给你的mdns名称(以.local
结尾)。这是因为ip可能会改变,而名称不会。
服务发现的第二步是通过mdns解析主机名称.local
。您通过多播请求foo.local
,foo.local
将看到该数据包,并通过广播与其IP地址,端口号和其他信息进行响应。
请帮忙这个查询http://stackoverflow.com/questions/40662608/service-discovery-using-dns-sd – Daemon 2016-11-20 20:44:29