首先,需要特別感謝藍(lán)斯老師的資料,我這里有很大一部分是參考藍(lán)斯老師的,附上傳送門:http://blog.csdn.net/lancees/article/details/9178385

一、DLNA相關(guān)設(shè)備說明

  DMS:Digital Media Server的縮寫,把本設(shè)備內(nèi)的多媒體文件(自己控制需要共享哪些文件)到DLNA服務(wù)端;

  DMP:Digital Media Player的縮寫,可以搜索局域網(wǎng)內(nèi),所有DMS提供的多媒體內(nèi)容,并在本設(shè)備播放;

  DMC:Digital MediaController的縮寫,作為控制DMP搜索播放DMS的內(nèi)容,與DMP不同,DMC可以控制局域網(wǎng)內(nèi)的其他設(shè)備的DMS和DMP之間的交互,比如,pad作為DMS,機(jī)頂盒做DMP,手機(jī)用做DMC,三個設(shè)備在同一局域網(wǎng)內(nèi),手機(jī)可以直接控制讓機(jī)頂盒播放pad里面共享出來的多媒體;

  DMR:Digital Render的縮寫,作用:DMP+DMR。

 

  一般來說,播放器中的DLNA功能具有DMS+DMC功能,如PPTV等,也就是說播放器能夠找到該局域網(wǎng)下的DMP服務(wù)端,同時能把自己的多媒體文件推送到DMP上

  而作為服務(wù)端一般會實現(xiàn)DMR功能,即可以播放DMS上的多媒體文件。

  DLNA技術(shù)是采用upnp協(xié)議進(jìn)行通信傳輸。

 

二、UPnP設(shè)備工作過程

  UPnP定義了設(shè)備之間、設(shè)備和控制點(diǎn)、控制點(diǎn)之間通訊的協(xié)議。完整的UPnP由設(shè)備尋址、設(shè)備發(fā)現(xiàn)、設(shè)備描述、設(shè)備控制、事件通知和基于Html的描述界面幾部分構(gòu)成。

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

 

  1.設(shè)備尋址

    uPnP網(wǎng)絡(luò)的基礎(chǔ)就是TCP/IP協(xié)議族,UPnP設(shè)備能在TCP/IP協(xié)議下工作的關(guān)鍵就是正確的設(shè)備尋址。一個UPnP設(shè)備尋址的一般過程是:首先向 DHCP服務(wù)器發(fā)送DHCPDISCOVER消息,如果在指定的時間內(nèi),設(shè)備沒有收到DHCPOFFERS回應(yīng)消息,設(shè)備必須使用 Auto-IP完成IP地址的設(shè)置。使用Auto-IP時,設(shè)備在地址范圍169.254/169.16范圍中查找空閑的地址。在選中一個地址之后,設(shè)備測試此地址是否在使用。如果此地址被占用,則重復(fù)查找過程直到找到一個未被占用的地址,此過程的執(zhí)行需要底層操作系統(tǒng)的支持,地址的選擇過程應(yīng)該是隨機(jī)的以避免多個設(shè)備選擇地址時發(fā)生多次沖突。為了測試選擇的地址是否未被占用,設(shè)備必須使用地址分辨協(xié)議(ARP)。一個ARP查詢請求設(shè)置發(fā)送者的硬件地址為設(shè)備的硬件地址,發(fā)送者的IP地址為全0。設(shè)備應(yīng)該偵聽ARP查詢響應(yīng),或者是否存在具有相同IP地址的ARP查詢請求。如果發(fā)現(xiàn),設(shè)備必須嘗試新的地址。

  2.設(shè)備發(fā)現(xiàn)

    一旦設(shè)備連接到網(wǎng)上并且分配了地址,就要進(jìn)行發(fā)現(xiàn)的操作了。設(shè)備發(fā)現(xiàn)是UPnP網(wǎng)絡(luò)實現(xiàn)的第一步。設(shè)備發(fā)現(xiàn)是由簡單發(fā)現(xiàn)協(xié)議SSDP(Simple Service Discovery Protocol)來定義的。在設(shè)備發(fā)現(xiàn)操作之后,控制點(diǎn)可以發(fā)現(xiàn)感興趣的設(shè)備,并使得控制點(diǎn)獲得設(shè)備能力的描述,同時控制點(diǎn)也可以向設(shè)備發(fā)送命令,偵聽設(shè)備狀態(tài)的改變,并將設(shè)備展示給用戶。

  3.設(shè)備描述

    uPnP網(wǎng)絡(luò)結(jié)構(gòu)的第二步是設(shè)備描述。在控制點(diǎn)發(fā)現(xiàn)了一個設(shè)備之后,控制點(diǎn)仍然對設(shè)備知之甚少,控制點(diǎn)可能僅僅知道設(shè)備或服務(wù)的uPnP類型,設(shè)備的UUID和設(shè)備描述的URL地址。為了讓控制點(diǎn)更多的了解設(shè)備和它的功能或者與設(shè)備交互,控制點(diǎn)必須從發(fā)現(xiàn)消息中得到設(shè)備描述的URL,通過URL取回設(shè)備描述。

  4.設(shè)備控制

    設(shè)備控制是uPnP網(wǎng)絡(luò)的第三步。在接收設(shè)備和服務(wù)描述之后,控制點(diǎn)可以向這些服務(wù)發(fā)出動作,同時控制點(diǎn)也可以輪詢服務(wù)的狀態(tài)變量值。發(fā)出動作實質(zhì)上是一種遠(yuǎn)程過程調(diào)用,控制點(diǎn)將動作送到設(shè)備服務(wù),在動作完成之后,服務(wù)返回相應(yīng)的結(jié)果。

  5.事件通知

    設(shè)備事件是uPnP網(wǎng)絡(luò)的第四步。一個服務(wù)的UPnP描述包括服務(wù)響應(yīng)的動作列表和運(yùn)行時模擬服務(wù)狀態(tài)的變量列表。當(dāng)這些變量改變時,服務(wù)就會發(fā)布更新,則控制點(diǎn)就會收到設(shè)備事件。

  6.展示

    只要得到了設(shè)備的ULR,就可以取得該設(shè)備表達(dá)頁面的ULR,然后可以將此表達(dá)納入用戶的本地瀏覽器上。這部分還包括與用戶對話的界面,以及與用戶進(jìn)行會話的處理。

 

三、開發(fā)步驟 

  1.下載PlatinumKit開源庫

    

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式