簡單服務發現協議(SSDP)編程指導


本文主要講解如何使用ssdp進行編程,不涉及過多關於ssdp的理論知識

1. 前言

  網上對ssdp理論介紹的一大把,缺乏從編程角度的一個指導,這里不會長篇大論ssdp理論,只是根據實際編碼經驗對用ssdp進行編碼做個淺顯的指導,希望能讓同行少走一些彎路。

2. 編程角度對ssdp協議的剖析

  ssdp是在HTTPU和HTTPMU基礎上實現的協議,HTTPU就是能在UDP上傳輸的HTTP協議(HTTP協議本身是基於TCP的),HTTPMU是在UDP上實現的HTTP協議的多址傳送。從編程的角度來理解這段話,只需要抓住幾個重點就可以了:UDPHTTP多址(multicast)。UDP在這里表示ssdp底層是通過UDP傳輸的,多址表示ssdp是通過組播的方式工作的,那http在這里扮演什么角色呢?  我們先來回顧下普通的http協議(后面就直接稱http協議),http協議是通過tcp傳輸的,而http本身只是規定了一些格式(就是瀏覽器和服務端都能理解的一份協議),從編程角度看,實際上http數據包也是普通的通過tcp傳輸的數據流,只是http本身規定了它的頭(header)格式,而這個header里面會有一個content-length字段,標明http包體的長度,所以我們利用http本身的格式可以很容易的從tcp數據流中解析出http包。在ssdp協議里面,http就是扮演了一種格式,ssdp的格式就是利用http的數據包格式。
  所以從編程角度看,可以用這樣一句話總結ssdp:ssdp是基於UDP通信利用組播來工作的具有http格式的協議。理解了這些之后,我們就會驚奇的發現,當需要在局域網內搜尋設備時,我們完全可以采用UDP組播的方式來自定義一套私有協議啊

3. ssdp服務端編程實現

  前面我們知道了ssdp是基於udp的協議,那么服務端實現ssdp服務器就很簡單了,只需要開啟一個UDP監聽,監聽地址為組播地址,監聽端口可以隨意(ssdp默認端口是1900,實際上我們編碼時可以隨意采用哪個端口),解析收到的UDP包時采用http協議就好了。具體代碼我就不放這里了,只要注意UDP監聽要開啟在組播地址上就好了。

4. ssdp客戶端編程實現

  客戶端就是創建一個基於udp的socket,往組播地址上(端口是服務端開啟的監聽端口)發送http協議的消息就好了。

5. 結束語

  剛開始接觸ssdp的時候會很懵,網上都是一大堆理論講解,有時候可能會看的雲里霧里,但是如果能夠看到ssdp的本質而不拘泥於ssdp協議本身具有哪些method、header(前面說了ssdp采用的就是http協議的格式,所以也會有method、header),就會發現ssdp還是很簡單的一個協議。


免責聲明!

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



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