mDNS / DNS-SD

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

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

有多個(gè)版本的實(shí)現(xiàn)

  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試驗(yàn)了局域網(wǎng)服務(wù)注冊(cè),發(fā)現(xiàn),服務(wù)離線的過程。
試驗(yàn)在兩臺(tái)linux虛擬機(jī)上進(jìn)行,共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為核心處理程序,在系統(tǒng)后臺(tái)運(yùn)行。

2.注冊(cè)服務(wù)

格式:

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

在192.168.182.147終端運(yùn)行:

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

在192.168.182.148終端運(yùn)行相同命令:

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

由于SERVICE-NAME與192.168.182.147沖突,所以進(jìn)行了重命名:


3.服務(wù)發(fā)現(xiàn)

在任一臺(tái)虛擬機(jī)輸入

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

會(huì)得到以下信息,包括兩臺(tái)機(jī)器的light服務(wù)


4.服務(wù)離線

在192.168.182.148終端終止avahi-publish-service。
在服務(wù)發(fā)現(xiàn)終端頁會(huì)得到以下輸出:


設(shè)備/服務(wù)發(fā)現(xiàn)是物聯(lián)網(wǎng)設(shè)備/服務(wù)互操作的重要操作環(huán)節(jié)。
HomeKit等知名系統(tǒng)采用了該方案。
在局域網(wǎng)環(huán)境有分布式操作需求時(shí),可能也需要采用類似方案。

5.開發(fā)移植

avahi是開源的,c語言實(shí)現(xiàn)。可以在以下鏈接下載并編譯。
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/avahi.html

在工程目錄../example 下有publish 和 browser的demo實(shí)現(xiàn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容