美文网首页
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