• DNLA自学(二) Device 设备描述


    接下来是如何识别设备了
    注释:没有添加注释的节点 建议保持默认值
    <?xml version="1.0" encoding="utf-8"?>
    <root xmlns:dlna="urn:schemas-dlna-org:device-1-0" xmlns:sec="http://www.sec.co.kr/dlna" xmlns="urn:schemas-upnp-org:device-1-0">
       <specVersion>
          <major>1</major>
          <minor>0</minor>
       </specVersion>
       <device>
          <dlna:X_DLNADOC>DMS-1.50</dlna:X_DLNADOC>
          <deviceType>urn:schemas-upnp-org:device:MediaServer:1</deviceType>
          <INMPR03>1.0</INMPR03>
          <friendlyName>TG</friendlyName>                                        //设备名称 可自定义
          <manufacturer>OpenSource</manufacturer>                                //厂家     可自定义
          <modelDescription>Media Service Device</modelDescription>              //模块描述 可自定义
          <modelName>Media Service</modelName>                                   //模块名称 可自定义
          <modelNumber>OpenSource 2.0</modelNumber>                              //模块号   可自定义
          <modelURL>http://www.sourceforge.org/</modelURL>                       //模块网址 可自定义
          <UDN>uuid:9210c6a8-ad73-46ec-ba84-bf426b9f9f7e</UDN>                  
          <iconList>                                                             //图标信息 用于客户端显示设备
             <icon>
                <mimetype>image/png</mimetype>                                   //图片类型
                <width>1024</width>                                              //宽度
                <height>768</height>                                             //高度
                <depth>24</depth>                                                //颜色位数
                <url>/icon.png</url>                                             //链接地址 不包含HOST
             </icon>
             <icon>
                <mimetype>image/jpg</mimetype>
                <width>1024</width>
                <height>768</height>
                <depth>24</depth>
                <url>/icon.jpg</url>
             </icon>
             <icon>
                <mimetype>image/png</mimetype>
                <width>1024</width>
                <height>768</height>
                <depth>24</depth>
                <url>/icon2.png</url>
             </icon>
             <icon>
                <mimetype>image/jpg</mimetype>
                <width>1024</width>
                <height>768</height>
                <depth>24</depth>
                <url>/icon2.jpg</url>
             </icon>
          </iconList>
          <serviceList>                                                                            //服务列表  ConnectionManager和ContentDirectory 为基本服务
             <service>
                <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>        //服务类型
                <serviceId>urn:schemas-upnp-org:service:ConnectionManager</serviceId>              //服务id
                <SCPDURL>_urn-schemas-upnp-org-service-ConnectionManager_scpd.xml</SCPDURL>        //controlURL和eventSubURL接口描述
                <controlURL>_urn-schemas-upnp-org-service-ConnectionManager_control</controlURL>   //服务接口
                <eventSubURL>_urn-schemas-upnp-org-service-ConnectionManager_event</eventSubURL>   //事件订阅接口
             </service>
             <service>
                <serviceType>urn:schemas-upnp-org:service:ContentDirectory:1</serviceType>
                <serviceId>urn:schemas-upnp-org:service:ContentDirectory</serviceId>
                <SCPDURL>_urn-schemas-upnp-org-service-ContentDirectory_scpd.xml</SCPDURL>
                <controlURL>_urn-schemas-upnp-org-service-ContentDirectory_control</controlURL>
                <eventSubURL>_urn-schemas-upnp-org-service-ContentDirectory_event</eventSubURL>
             </service>
          </serviceList>
       </device>
    </root>
     
     
    DMS(MediaServer) 必须包含ContentDirectory 和 ConnectionManager服务
    DMP(AVRenderer) 必须包含ConnectionManager、RenderingControl和AVTransport服务
     
    后面的文章主要介绍接口API,不再介绍接口调用和例子
     

    “服务”调用的方法

    请求:
    注:
    1、绿色部分换成服务相应的值
    2、Browse为接口名称
    3、pararms... 换成接口参数
    POST /_urn-schemas-upnp-org-service-ContentDirectory_control HTTP/1.1
    HOST: 192.168.0.106:47619
    SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"  //
    CONTENT-TYPE: text/xml ; charset="utf-8"
     
    <?xml version="1.0" encoding="utf-8"?>
    <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
       <s:Body>
          <u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
            pararms...                                                              
          </u:Browse>
       </s:Body>
    </s:Envelope>
     

    调用例子:

    请求:
    POST /_urn-schemas-upnp-org-service-ContentDirectory_control HTTP/1.1
    HOST: 192.168.0.106:47619
    SOAPACTION: "urn:schemas-upnp-org:service:ContentDirectory:1#Browse"
    CONTENT-TYPE: text/xml ; charset="utf-8"
     
    <?xml version="1.0" encoding="utf-8"?>
    <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
       <s:Body>
          <u:Browse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
             <ObjectID>0</ObjectID>
             <BrowseFlag>BrowseDirectChildren</BrowseFlag>
             <Filter>*</Filter>
             <StartingIndex>0</StartingIndex>
             <RequestedCount>15</RequestedCount>
             <SortCriteria />
          </u:Browse>
       </s:Body>
    </s:Envelope>
     
    响应:
    HTTP/1.1 200  OK
    CONTENT-TYPE:  text/xml; charset="utf-8"
    EXT:  
    SERVER:  Windows NT/5.0, UPnP/1.0
     
    <?xml version="1.0" encoding="utf-8"?>
    <s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
       <s:Body>
          <u:BrowseResponse xmlns:u="urn:schemas-upnp-org:service:ContentDirectory:1">
             <Result><DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/">
      <container id="0000000000000004" searchable="0" parentID="0" restricted="1" childCount="1">
        <dc:title>Shared Dir</dc:title>
        <upnp:class>object.container</upnp:class>
        <upnp:writeStatus>UNKNOWN</upnp:writeStatus>
      </container>
    </DIDL-Lite></Result>
             <NumberReturned>1</NumberReturned>
             <TotalMatches>1</TotalMatches>
             <UpdateID>1</UpdateID>
          </u:BrowseResponse>
       </s:Body>
    </s:Envelope>

     

    “事件订阅” 调用的方法

    客户端请求:
    SUBSCRIBE /_urn-schemas-upnp-org-service-ConnectionManager_event HTTP/1.1
    NT: upnp:event
    TIMEOUT: Second-300
    HOST: 192.168.30.14:47187
    //CALLBACK 为服务器推给客户端的数据,也就是说客户端需要 启动一个server用于接收
     
    服务器响应:
    HTTP/1.1 200 OK
    TIMEOUT: Second-300
    SID: uuid:0bd467b6-ad65-4873-a9b3-168bf7a987d2-urn:schemas-upnp-org:service:ConnectionManager-1
    SERVER: Windows NT/5.0, UPnP/1.0

     

    服务器推送的订阅

    服务器推送:

    NOTIFY /0bd467b6-ad65-4873-a9b3-168bf7a987d2/urn:schemas-upnp-org:service:ConnectionManager HTTP/1.1
    CONTENT-TYPE: text/xml
    SEQ: 0
    HOST: 192.168.30.114:9558
    NTS: upnp:propchange
    SID: uuid:0bd467b6-ad65-4873-a9b3-168bf7a987d2-urn:schemas-upnp-org:service:ConnectionManager-1
    CONNECTION: close
    NT: upnp:event
     
    <?xml version="1.0" encoding="utf-8"?>
    <e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
       <e:property>
          <SinkProtocolInfo>192:168:30:14</SinkProtocolInfo>
       </e:property>
       <e:property>
          <SourceProtocolInfo>192:168:30:14</SourceProtocolInfo>
       </e:property>
       <e:property>
          <CurrentConnectionIDs>0</CurrentConnectionIDs>
       </e:property>
    </e:propertyset>
     
    客户端响应:
    HTTP/1.1 200 OK





     
     










    我的开源的地址https://github.com/tianjing/ 大家踊跃拍砖共同成长,拍砖的同时记得附上意见或者建议。!!谢谢 谢谢
  • 相关阅读:
    报错注入验证sqli
    pycharm out of memory 闪退
    集群、分布式、负载均衡区别与联系
    如何获取线程池ThreadPoolExecutor正在运行的线程
    docker快速安装mysql
    基于guava实现本地缓存
    NIO selector 多路复用reactor线程模型
    网络编程之NIO
    网络编程之BIO
    反射性能研究,反射赋值与set方法赋值对比
  • 原文地址:https://www.cnblogs.com/tianjing/p/2995736.html
Copyright © 2020-2023  润新知