首先,需要特别感谢蓝斯老师的资料,我这里有很大一部分是参考蓝斯老师的,附上传送门:http://blog.csdn.net/lancees/article/details/9178385
一、DLNA相关设备说明
DMS:Digital Media Server的缩写,把本设备内的多媒体文件(自己控制需要共享哪些文件)到DLNA服务端;
DMP:Digital Media Player的缩写,可以搜索局域网内,所有DMS提供的多媒体内容,并在本设备播放;
DMC:Digital MediaController的缩写,作为控制DMP搜索播放DMS的内容,与DMP不同,DMC可以控制局域网内的其他设备的DMS和DMP之间的交互,比如,pad作为DMS,机顶盒做DMP,手机用做DMC,三个设备在同一局域网内,手机可以直接控制让机顶盒播放pad里面共享出来的多媒体;
DMR:Digital Render的缩写,作用:DMP+DMR。
一般来说,播放器中的DLNA功能具有DMS+DMC功能,如PPTV等,也就是说播放器能够找到该局域网下的DMP服务端,同时能把自己的多媒体文件推送到DMP上
而作为服务端一般会实现DMR功能,即可以播放DMS上的多媒体文件。
DLNA技术是采用upnp协议进行通信传输。
二、UPnP设备工作过程
UPnP定义了设备之间、设备和控制点、控制点之间通讯的协议。完整的UPnP由设备寻址、设备发现、设备描述、设备控制、事件通知和基于Html的描述界面几部分构成。
1.设备寻址
uPnP网络的基础就是TCP/IP协议族,UPnP设备能在TCP/IP协议下工作的关键就是正确的设备寻址。一个UPnP设备寻址的一般过程是:首先向 DHCP服务器发送DHCPDISCOVER消息,如果在指定的时间内,设备没有收到DHCPOFFERS回应消息,设备必须使用 Auto-IP完成IP地址的设置。使用Auto-IP时,设备在地址范围169.254/169.16范围中查找空闲的地址。在选中一个地址之后,设备测试此地址是否在使用。如果此地址被占用,则重复查找过程直到找到一个未被占用的地址,此过程的执行需要底层操作系统的支持,地址的选择过程应该是随机的以避免多个设备选择地址时发生多次冲突。为了测试选择的地址是否未被占用,设备必须使用地址分辨协议(ARP)。一个ARP查询请求设置发送者的硬件地址为设备的硬件地址,发送者的IP地址为全0。设备应该侦听ARP查询响应,或者是否存在具有相同IP地址的ARP查询请求。如果发现,设备必须尝试新的地址。
2.设备发现
一旦设备连接到网上并且分配了地址,就要进行发现的操作了。设备发现是UPnP网络实现的第一步。设备发现是由简单发现协议SSDP(Simple Service Discovery Protocol)来定义的。在设备发现操作之后,控制点可以发现感兴趣的设备,并使得控制点获得设备能力的描述,同时控制点也可以向设备发送命令,侦听设备状态的改变,并将设备展示给用户。
3.设备描述
uPnP网络结构的第二步是设备描述。在控制点发现了一个设备之后,控制点仍然对设备知之甚少,控制点可能仅仅知道设备或服务的uPnP类型,设备的UUID和设备描述的URL地址。为了让控制点更多的了解设备和它的功能或者与设备交互,控制点必须从发现消息中得到设备描述的URL,通过URL取回设备描述。
4.设备控制
设备控制是uPnP网络的第三步。在接收设备和服务描述之后,控制点可以向这些服务发出动作,同时控制点也可以轮询服务的状态变量值。发出动作实质上是一种远程过程调用,控制点将动作送到设备服务,在动作完成之后,服务返回相应的结果。
5.事件通知
设备事件是uPnP网络的第四步。一个服务的UPnP描述包括服务响应的动作列表和运行时模拟服务状态的变量列表。当这些变量改变时,服务就会发布更新,则控制点就会收到设备事件。
6.展示
只要得到了设备的ULR,就可以取得该设备表达页面的ULR,然后可以将此表达纳入用户的本地浏览器上。这部分还包括与用户对话的界面,以及与用户进行会话的处理。
三、开发步骤
1.下载PlatinumKit开源库
延伸阅读
学习是年轻人改变自己的最好方式