美文网首页
mDNS / DNS-SD

mDNS / DNS-SD

作者: 小石头成长记 | 来源:发表于2020-05-07 15:10 被阅读0次

mDNS / DNS-SD由RFC 6762 和 6763 定义

[1] http://tools.ietf.org/html/rfc6762
[2] http://tools.ietf.org/html/rfc6763

有多个版本的实现

  1. avahi – Linux implementation (http://www.avahi.org/)
  2. jmDNS – Java implementation (http://jmdns.sourceforge.net/)
  3. Bonjour – MAC OS (installed by default)
  4. Bonjour – Windows (https://support.apple.com/kb/DL999?locale=en_US)

说明:

本文通过avahi试验了局域网服务注册,发现,服务离线的过程。
试验在两台linux虚拟机上进行,共IP分别为。
1、192.168.182.147
2、192.168.182.148

1. avahi install

sudo apt-get install avahi-deamon
sudo apt-get install avahi-utils

avahi-deamon为核心处理程序,在系统后台运行。

2.注册服务

格式:

avahi-publish-service SERVICE-NAME _APPLICATIONPROTOCOL._TRANPOSRT-PROTOCOL PORT “DESCRIPTION” --sub SUBPROTOCOL

在192.168.182.147终端运行:

avahi-publish-service light _coap._udp 5683 “/mylight” --sub
_floor1._sub._coap._udp

在192.168.182.148终端运行相同命令:

avahi-publish-service light _coap._udp 5683 “/mylight” --sub
_floor1._sub._coap._udp

由于SERVICE-NAME与192.168.182.147冲突,所以进行了重命名:


3.服务发现

在任一台虚拟机输入

avahi-browse -rp _floor1._sub._coap._udp
或
avahi-browse -rp _coap._udp

会得到以下信息,包括两台机器的light服务


4.服务离线

在192.168.182.148终端终止avahi-publish-service。
在服务发现终端页会得到以下输出:


设备/服务发现是物联网设备/服务互操作的重要操作环节。
HomeKit等知名系统采用了该方案。
在局域网环境有分布式操作需求时,可能也需要采用类似方案。

5.开发移植

avahi是开源的,c语言实现。可以在以下链接下载并编译。
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/avahi.html

在工程目录../example 下有publish 和 browser的demo实现。

相关文章

网友评论

      本文标题:mDNS / DNS-SD

      本文链接:https://www.haomeiwen.com/subject/gflaghtx.html