DLNA第一步UPnP协议栈
前面公司有DLNA项目,研究了一下,在网上关于DLNA的资源很少,就将自己的心得写出来,以供参考。
其它的关于DLNA的介绍就不多说,要了解DLNA需要了解upnp,因为DLNA在upnp之上,初学者可以从http://www.upnp.org下载upnp的资料.也欢迎大家加入197683240 DLNA交流群。
upnp分为四步:发现 、描述 、控制 、事件 发现 当一个UPnP的设备加入网络,并想知道什么UPnP服务在网络上可用,它发送一个发现消息多播地址239.255.255.250端口1900通过UDP协议。此消息包含一个头,类似于一个HTTP请求。该协议有时被称为为HTTPU(HTTP通过UDP): M-SEARCH * HTTP/1.1 ST: upnp:rootdevice MX: 3
MAN: \所有其他UPnP设备或方案都必须回应此消息类似的消息发送回设备,使用UDP单播,宣布该设备或程序实现的UPnP型材。一个有趣的怪癖:发送UDP单播设备发现消息被送往港口。对于每一个配置文件,它实现发送一条消息: HTTP/1.1 200 OK
ST:upnp:rootdevice
USN:uuid:1d8ec8a7-4736-4598-9950-9710c992e471::upnp:rootdevice
Location:http://172.16.11.205:2869/upnphost/udhisapi.dll?content=uuid:1d8ec8a7-4736-4598-9950-9710c992e471
OPT:\4dcc4f213129a39f9b2ae98977 Cache-Control:max-age=3200 Server:Microsoft-Windows-NT/5.1
UPnP/1.0UPnP-Device-Host/1.0在定期间隔的UPnP功能的设备或程序发送一条消息,宣布他们的服务。一个通知消息是或多或少相同,但发现响应消息发送到239.255.255.250组播地址通过UDP 1900端口上的UPnP有ST头,取而代之的是一个类似头NT头。 描述
每个配置文件提供了本身的描述和它提供的服务,并通过XML提供。从发现阶段的响应消息中包含一个头称为位置(不区分大小写),这是一个XML格式的文件可以下载的网址。这个文件描述(或相当:应说明)配置文件,设备或计划实施,控制和事件相应命令发送到专门的网址,但也可能是其他有关设备的元信息,如图标,这应该是显示Windows资源管理器,设备制造商,依此类推。 有没有这个头文件的默认值。事实上,在一些设备,尤其是对一个Broadcom
芯片为基础的,它被设置在启动时动态。唯一的方法是完全肯定的是永远做设备发现。控制
在该协议的第三步是“控制”:设备或程序可以要求其他设备或程序执行客户的名义采取行动,使用SOAP。 SOAP是一个协议,运行在HTTP上使用XML来描述远程过程调用服务器和从这些调用的返回结果。 SOAP主要用于基于网络的服务。对于每一个主要的编程语言库,可以用来实现SOAP请求和处理SOAP响应。 请求服务是通过发送一个SOAP请求到正确的参数,所谓的“控制URL”的控制点。为控制特定的配置文件的URL地址,可以发现在XML文件的URL在Location头从描述阶段发现内的<service>标签。配置文件标记看起来像这样: <service>
<serviceType>urn:dmc-samsung-com:service:SyncManager:1</serviceType>
<serviceId>urn:dmc-samsung-com:serviceId:SyncManager</serviceId>
<controlURL>/upnphost/udhisapi.dll?control=uuid:1d8ec8a7-4736-4598-9950-9710c992e471+urn:dmc-samsung-com:serviceId:SyncManager</controlURL>
<eventSubURL>/upnphost/udhisapi.dll?event=uuid:1d8ec