博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UPNP实现的基本原理
阅读量:5772 次
发布时间:2019-06-18

本文共 1165 字,大约阅读时间需要 3 分钟。

转自

  UPnP网络的第1步是发现。在将一个设备添加到网络上之后,UPnP发现协议允许该设备向网络中的控制点宣告其服务。同样,当一个控制点被添加到网络后,UPnP发现协议允许该控制点在网上搜索感兴趣的设备。两种情况下的根本信息交换均为一个发现消息,包含有关该设备或其服务之一的一些基础信息(例如其类型、标识符和指向更详细信息的一个指针)。UPnP发现协议基于简单服务发现协议(SSDP)。

    UPnP网络中的第2步是描述。控制点在发现一个设备之后仍然对其知之甚少。为了使控制点了解到更多关于设备及其能力的信息或与设备进行交互,则控制点必须取得来自该设备在发现消息中所提供之URL的设备描述。设备可能包含其它逻辑设备,以及功能单元或服务。对于设备的UPnP描述通过XML来表达,并包括诸如模型名称和号码、序列号、制造商名称和厂商专门网站URL等专门针对厂商的制造商信息。该描述还包括一列任意的嵌入式设备或服务,以及用于控制、事件触发和展示的URL。对于每项服务,此描述均包括一列命令或动作,而服务(参数或变量)对于每个动作做出响应;针对服务的描述还包括一列变量;这些变量模型化服务在运行时的状态,并通过数据类型、范围和事件特征进行描述。

    UPnP网络中的第3步是控制。当一个控制点取得设备描述后,该控制点可将动作发至一个设备的服务。为此,控制点将一条适当的控制消息发至服务的控制URL(在设备描述中提供)。控制消息同样利用简单对象访问协议(SOAP)通过XML来表达。类似于功能调用,该服务针对控制消息返回了所有的专门动作取值。动作的效果可以通过描述服务运行时状态的变量进行描述。

    UPnP网络的第4步是事件触发。针对服务的UPnP描述包括一个服务响应的动作列表,以及一个对服务器运行时状态进行展示的变量列表。在这些变量变更时服务会发布更新,一个控制点可以预订接收此信息。服务通过发送事件消息来发布更新。事件消息包含一个或多个状态变量名和这些变量的当前值。这些消息同样通过XML来表达,并采用通用事件通知架构(GENA)格式。当控制点首次预定时,会发送一个特殊的初始事件消息;此事件消息包含所有事件变量的名称和值,并允许订阅者对服务状态模式进行初始化。为了支持拥有多个控制点的环境,事件触发设计用于将任何动作的效果通知所有控制点。因此,所有订阅者均会收到全部的事件消息。订阅者收到关于所有已变更事件变量的事件消息,此事件消息无论状态变量为何改变都被发送(由于响应一个要求动作,或由于服务建模状态的变更)。

    UPnP网络中的第5步是展示。如果设备有用于展示的URL,那么控制点就可以通过此URL取得一个页面,在浏览器中加载该页面,并且根据页面的功能,支持用户控制设备和/或浏览设备状态。每一项完成的程度取决于展示页面和设备的具体功能。

转载地址:http://zqaux.baihongyu.com/

你可能感兴趣的文章
Resume简历中装B的词汇总结大全
查看>>
python udp编程实例
查看>>
TortoiseSVN中图标的含义
查看>>
js原生继承之——构造函数式继承实例
查看>>
linux定时任务的设置
查看>>
[CareerCup] 13.3 Virtual Functions 虚函数
查看>>
[Angular 2] ng-model and ng-for with Select and Option elements
查看>>
Visio中如何让重叠图形都显示
查看>>
Tasks and Back stack 详解
查看>>
关于EXPORT_SYMBOL的作用浅析
查看>>
成功的背后!(给所有IT人)
查看>>
在SpringMVC利用MockMvc进行单元测试
查看>>
Nagios监控生产环境redis群集服务战
查看>>
Angular - -ngKeydown/ngKeypress/ngKeyup 键盘事件和鼠标事件
查看>>
Android BlueDroid(一):BlueDroid概述
查看>>
Java利用httpasyncclient进行异步HTTP请求
查看>>
循环多少次? 【杭电--HDOJ-1799】 附题+具体解释
查看>>
linux系统终端命令提示符设置(PS1)记录
查看>>
C++运算符重载
查看>>
【Web】URI和URL,及URL的编码
查看>>