歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> ARM Linux下UPnP使用

ARM Linux下UPnP使用

日期:2017/2/28 15:47:22   编辑:Linux教程

一、UPnP簡介

UPnP(Universal Plug and Play)技術是一種屏蔽各種數字設備的硬件和操作系統的通信協議。它是一種數字網絡中間件技術,建立在TCP/IP、HTTP協議之上,采用XML來描述設備和控制信息。這種技術最開始是被微軟,因特爾等公司使用在數字家庭中的,用來在家庭網絡中完成多媒體資源共享,家電一體化等功能,例如在各種家電上實現IP數字化,加入網絡傳輸和控制部分,從而讓家電能組建UPnP網絡,這種技術能讓人們在上班或者外地出差時能查看家庭情況,如:是否有家電忘記關閉;監控家庭情況;或者在回家之前打開家裡的熱水器並設置水溫;在天熱時提前打開空調;打開電飯煲開始蒸飯……

這些應用由於家電廠商的不積極(目前能連接到網絡的家電可能只有電視吧),或許是成本問題等,UPnP設計之初想要達到的數字家庭並未得到普及和廣泛應用。但是UPnP的特有特性還是很吸引人的,它最大的特性是它的消息發送是通過HTTP協議發送,所有的消息內容都是通過XML包裝的,這種消息傳輸模式使得我們能通過浏覽器訪問和控制支持UPnP協議的設備,再來讓我們看看傳統的嵌入式網絡的通信吧,大多數設備之間網絡通信直接使用TCP/IP上的socket編程,這種通信模式需要通信的雙方制定好通信數據的格式包,在客戶端和服務器端都需要進行編程,而且一旦項目需求發生變化,通信格式發生變化時,這時通信兩端的程序都需要修改,如果客戶還提出跨平台的問題,那需要修改的就更多了。UPnP協議本身是利用的現有的通用協議而來的,它占用資源少,特別適用於嵌入式網絡領域,能通過浏覽器訪問和控制設備的特性使得UPnP的編程通常只涉及一方,即設備端。通信數據格式的修改和客戶需求的變化也只涉及到設備端的修改,它便於設備的升級,UPnP設備在添加到網絡中時,就可以立即被網絡中擁有浏覽器的客戶端訪問和控制。

二、UPnP的組成

UPnP網絡是指通過采用UPnP協議的設備所組成的網絡,它的基本組件是服務、設備和控制點

服務是UPnP網絡中最小邏輯功能單元,由狀態表、事件和控制服務器組成。狀態表描述服務的當前狀態;事件服務器用來管理來自控制點的事件訂閱請求,並在服務的狀態改變時向訂閱者發送狀態更新事件;而控制服務器則負責處理來自控制點的動作請求。

UPnP設備由一組子設備或服務構成,同時多個設備下的子設備也通過邏輯組合構成新的設備。設備中的每個功能也可以當做一個邏輯子設備向外發布。

控制點的功能是發現和控制其它設備,在控制點發現一個網絡設備後,它會發出請求先獲取設備描述和服務列表,再獲取感興趣的服務描述,然後通過動作請求來控制服務。控制點訂閱設備的服務事件時,服務會在狀態變化時向控制點發送的狀態更新事件。一個控制點可以控制多個UPnP設備,也可以作為一個設備被其它控制點控制。

三、UPnP的工作過程

UPnP的工作過程

UPnP協議棧

四、UPnP的描述文檔

在UPnP的工作是基於UPnP描述文件的。UPnP描述文件分為設備描述文件服務描述文件

設備描述文件包括設備屬性和它所提供的服務,一個標准設備描述文檔如下所示:

  1. <?xml version="1.0"?>
  2. <root xmlns="urn:schemas-upnp-org:XXXXXX">
  3. ......
  4. <device>
  5. <deviceType>urn:schemas-upnp-org:device: XXXXXX: X </deviceType>
  6. ……
  7. <UDN>uuid:XXXXXX</UDN>
  8. <UPC>……</UPC>
  9. <serviceList>
  10. <service>…… </service>
  11. </serviceList>
  12. <presentationURL>/設備展示URL地址</presentationURL>
  13. </device>
  14. </root>
Copyright © Linux教程網 All Rights Reserved