UPnP设备描述文件

以前用Ruby和mswin自带的COM组件写过一个UPnP模拟测试工具,最近接到维护的指示,居然发现当初玩了那么久的东西居然记不起来了,就稍微整理下。

 

每个UPnP设备都得自带一个Device Description的xml,根据这个xml的描述,扫描到该UPnP设备的客户端才能确定是个什么设备,能使用它特供的什么功能。 mswin自带的COM组件搜索UPnP设备时,直接就能拿到这个xml,所以这个xml具体走得什么协议我也不是很清楚,但是从wireshark的截的包上来看还是HTTP GET。

 

这篇文章就说说Device Description相关的东西吧。

<root> 节点是根节点,一般分两部分,一部分是<specVersion>指明UPnP版本,另一部分是<device>详细说明设备本身。

以下说说<device>里面值得一提的节点。

<friendlyName>在mswin的“网络”中可以搜索显示出来。

<deviceType>说明设备类型,格式似乎是urn:schemas-upnp-org:device:XXX:1,其中XXX可以根据具体情况来设置,例如我抓包抓到的索尼电视BRAVIA的该字段为MediaRenderer,某TPLINK家用路由器该字段为InternetGatewayDevice,我以前写的工具里面设置为Basic。很明显,这些肯定在UPnP标准中有定义。

MediaRenderer在Win7的“网络”中划分为“媒体设备”,图标右上角带一个播放的图示;MediaServer也划分为“媒体设备”,图标右上角是媒体e图示。基本上Windows Media Player只要有,就至少是一个MediaServer,如果再开启允许外部播放流媒体之类的dlna功能,一般还能多一个MediaRenderer设备。路由器也有相应的图标,划分在“网络设施”中。Win7不认识的,就划分到“其他设备”中。

<serviceList> 中则列出了这个设备的各种功能,每个功能是一个单独的<service>节点。例如某TPLINK只有一个<service>,其中<serviceType>为urn:schemas-upnp-org:service:Layer3Forwarding:1,很明显,这是端口自动透明转发和转接功能,电驴BT很多软件建议开启路由器的UPnP功能就是为了使用这个service,当然,如果TPLINK所在也是局域网,开启它就意义不大了。再例如BRAVIA有三个<service>,<serviceType>分别为(我就省略前缀和后缀了)RenderingControl、ConnectionManager和AVTransport。

如果有<deviceList>,那么在这个节点里又可以继续嵌套新的<device>节点,虽然我还不怎么理解这种嵌套的设备是个什么意思。

 

嗯,<device>往往还有些<av:>标签,有空再整理。

你可能感兴趣的:(UP)