局域網設備發現——mDNS協議


背景

在一次小程序開發需求中,需要開發投影儀設備遙控功能。為了提升用戶的體驗需要實現手機與投影儀設備之間的近場發現(類似於局域網之間的設備進行WIFI配對)。最初選型為局域網內的設備發現,后根據小程序文檔得知 iOS 微信客戶端 7.0.18 及以上版本無法使用 mDNS 相關接口,安卓版本不受影響。所以將使用藍牙功能來補充局域網設備發現的部分缺陷。本篇幅不介紹藍牙相關的能力開發。

 

介紹

通常我們做網絡之間的通訊無論是 TCP、UDP或者是 HTTP等協議我們都需要知道對等方的 IP地址(域名)和端口號。但是在局域網環境下一般來說設備的IP地址都是由 DHCP進行動態分配,不能保證同一設備在同一局域網段內的 IP地址每次都相同。此時如果一台主機在局域網內建立了網絡服務,作為客戶端是無法得知服務的 IP地址的,也就無法建立網絡通訊,此時我們就需要用到 mDNS協議。

 

mDNS

  • mDNS 基於 UDP 協議。

  • mDNS 一般作用在一個局域網內的,有特定的 IP 地址,也就是 224.0.0.251,有特定的端口 5353。

  • mDNS 的作用是實現局域網內的服務發現,查詢,注冊

 

每個進入局域網的主機,如果開啟了 mDNS 服務的話,都會向局域網內的所有主機組播一個消息,核心內容是:我是誰,和我的IP地址是多少。

 

舉個例子:

A 主機進入局域網,開啟了 mDNS 服務,並向 mDNS 服務注冊以下信息:我提供 TCP 服務,我的 IP 是 192.168.1.101,端口是 9504。當 B 主機進入局域網,並向 B 主機的 mDNS 服務請求,我要找局域網內 TCP 服務器,B主機的 mDNS 就會去局域網內向其他的 mDNS 詢問,並且最終告訴你,有一個IP地址為 192.168.1.101,端口號是 9504 的主機,也就是 A 主機提供 TCP 服務,所以 B 主機就知道了 A 主機的 IP 地址和端口號了。

 

上述這些就能對近場設備發現功能的實現提供一些思路,我們只需要讓投影儀設備在 mDNS服務上注冊一條提供 TCP服務的信息,此時手機端小程序調用mDNS接口發現投影儀設備給出的信息,再建立小程序與投影儀之間的 TCP連接,后面的內容實現起來就是常規操作了

 

調試工具

 

文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM