http://www.plutinosoft.com/platinumandroid
http://blog.csdn.net/lancees/article/details/9178385服務器
Note that Platinum SDK links with Neptune C++ Runtime網絡
UpnP 包含一下五個基本部分/階段(Phases):
一、發現(Discovery):這是第一階段,控制點搜索設備和服務,相似的,設備廣播他
所能提供的服務通告。
二、描述(Description):一旦控制點發現了他感興趣的設備或服務,他將請求該設備提
供該設備自己、其餘組件成員設備以及他們提供的服務的完整描述。
三、控制(Control):本階段容許控制點經過改變設備的狀態來控制設備上提供的一個或
多個服務。
四、事件(Eventing):本階段容許控制點與其感興趣的服務狀態保持同步,控制點向事
件服務器訂閱一個特定的服務,當該服務狀態改變時,接收事件通告。
五、表示(Presentation):表示階段容許設備保持一份文檔,該文檔採用標準 HTML 語言
編寫,他能夠是該設備的一個用戶界面。
架構
1.1.一、發現(Discovery)
在發現階段,控制點採用 SSDP(簡單服務發現協議:Simple Service Discovery
Protocol)發現設備和服務而設備採用 SSDP 向控制點宣告他們的存在。SSDP 採用 HTTP 的
一種變體以 UDP 多播的方式來進行廣播,並採用另外一種 HTTP 變體經過 UDP 單播來進行應
答。
一個設備可能包含其餘設備,每一個設備都有他本身的服務。設備採用其類型和一個惟一
的標誌符來進行標識。服務則用他們的類型來標識。
爲了搜索網絡上的設備或服務,控制點使用 UDP 多播包向地址 239.255.255.250:1900 發送
HTTP 的 M-SEARCH 命令。任何網絡上服務控制點搜索條件的設備發回一個 UDP 單播進行
應答,該應答中包含了指向其描述文檔(參加 1.1.2 節)的 URL 地址。若是一個控制點收到
一個或多個可接受的應答,他將轉入描述階段(description phase).
一個控制點發出一個搜索請求時,該請求在 SSDP 頭中包含了他願意等待的時間長度。匹配
的設備將在響應以前隨機等待一段時間(緣由?),該時間介於 0 和控制點指示的時間之間。若是控制點
在他的搜索時間超時以前沒有收到任何應答,他就認爲當前網絡上沒有匹配的設備。
設備不必等待控制點來搜索他們的服務。他們能夠採用向 239.255.255.250:1900 多播地址發
送 SSDP 的 NOTIFY 命令來宣告他們的設備可用性。當控制點得到該 NOTIFY 多播,他們就能夠
使用標準的 HTTP GET 命令來向 NOTIFY 消息中提供的 URL 地址發出請求以得到設備的描述文
檔。設備必須在他們的服務不可用時發出一個通告信息。
app
1.1.二、描述(Description)
當控制點定位一個服務後他但願瞭解更多,於是他將請求描述文檔。描述是一個
XML 文檔用來描述一個設備,包括:
● 製造商信息,版本,其餘。
● 可被設備採用的圖標的 URL 地址。
● 嵌入式設備列表。
● 設備提供的服務列表。
想獲得關於描述文檔的格式的更多信息,請參見文檔《Universal Plug and Play
Device Architecture》(《通用即插即用設備架構》)。
控制點採用基於TCP的HTTP來請求描述文檔。控制點執行標準的HTTP GET命令(與檢索
Web頁面相似)。在服務器端,設備運行一個標準的HTTP服務--能夠是徹底的Web服務器如
Apache也能夠是迷你服務器。描述文檔中的不少條目都是URL地址。這些條目也使用HTTP/TCP
檢索。
框架
1.1.三、控制(Control)
一旦一個控制點發現了一個設備而且檢索到他的描述文檔,他可能須要控制該設備包含的
一個或多個服務。簡單對象訪問協議(SOAP:Simple Object Access Protocol)容許一個訪
問點查詢或改變服務狀態表中的元素。SOAP使用基於TCP傳輸HTTP的POST和M-POST命令。
SOAP使用XML來講明採起的活動。控制點如描述文檔裏指定的那樣爲服務建立XML文檔並將
其提交給控制URL。控制點能請求服務狀態表中的當前值並改變他們。
在服務器端,控制服務器等待控制請求。控制服務器是一個實現了SOAP協議的相似於HTTP
服務器的服務器。一個設備能運行多於一個控制服務器,這取決於設備提供的服務的組合。
1.1.四、事件(Eventing)
一個控制點發現一個設備並檢索到他的描述後,他能保持設備提供的服務的狀態信息。感
興趣的控制點爲特定服務訂閱了從描述文檔中發現的設備事件提醒服務URL。一個事件提醒在
任何服務狀態改變的時候發送給控制點,即便此次改變是由該控制點產生的。
訂閱和退訂請求使用HTTP/TCP鏈接到事件URL,該URL包含在服務的描述文檔中。在訂閱時,
控制點指定一個事件提醒的URL。事件以HTTP/TCP方式到達爲服務註冊的URL。事件提醒包含
一個小型的XML文檔,該文檔描述了實際的事件,如服務狀態表的改變。
在服務器端,一個事件服務器等待訂閱和退訂請求。事件服務器是一個類HTTP服務器的實
現通用事件提醒架構協議(GENA:General Event Notification Architecture)的服務器。
一個設備將可能根據設備提供的服務的組合(狀況)必須運行多於一個的事件服務器。
1.1.五、表示(Presentation)
因爲設備須要或支持用戶交互,在表示階段一個控制點能下載一個爲設備描述用戶界面的
HTML文檔。這是一個能提供一種控制或狀態顯示的標準HTML文檔。
如檢索描述文檔同樣,檢索表示文檔的協議也是基於TCP的HTTP協議。控制點使用描述文檔
中包含的表示URL來請求表示文檔。不是全部設備都擁有表示文檔也不是全部控制點可以顯示
包含複雜HTML對象如框架,嵌入式Java applets等的表示文檔。
spa
http://blog.csdn.net/lancees/article/details/8789678.net
http://blog.csdn.net/lancees/article/details/8951679對象
http://blog.csdn.net/lancees/article/details/9865411blog