Welcome 微信登录

首页 / 操作系统 / Linux / ARM Linux下UPnP使用

一、UPnP简介UPnP(Universal Plug and Play)技术是一种屏蔽各种数字设备的硬件和操作系统的通信协议。它是一种数字网络中间件技术,建立在TCP/IP、HTTP协议之上,采用XML来描述设备和控制信息。这种技术最开始是被微软,因特尔等公司使用在数字家庭中的,用来在家庭网络中完成多媒体资源共享,家电一体化等功能,例如在各种家电上实现IP数字化,加入网络传输和控制部分,从而让家电能组建UPnP网络,这种技术能让人们在上班或者外地出差时能查看家庭情况,如:是否有家电忘记关闭;监控家庭情况;或者在回家之前打开家里的热水器并设置水温;在天热时提前打开空调;打开电饭煲开始蒸饭……这些应用由于家电厂商的不积极(目前能连接到网络的家电可能只有电视吧),或许是成本问题等,UPnP设计之初想要达到的数字家庭并未得到普及和广泛应用。但是UPnP的特有特性还是很吸引人的,它最大的特性是它的消息发送是通过HTTP协议发送,所有的消息内容都是通过XML包装的,这种消息传输模式使得我们能通过浏览器访问和控制支持UPnP协议的设备,再来让我们看看传统的嵌入式网络的通信吧,大多数设备之间网络通信直接使用TCP/IP上的socket编程,这种通信模式需要通信的双方制定好通信数据的格式包,在客户端和服务器端都需要进行编程,而且一旦项目需求发生变化,通信格式发生变化时,这时通信两端的程序都需要修改,如果客户还提出跨平台的问题,那需要修改的就更多了。UPnP协议本身是利用的现有的通用协议而来的,它占用资源少,特别适用于嵌入式网络领域,能通过浏览器访问和控制设备的特性使得UPnP的编程通常只涉及一方,即设备端。通信数据格式的修改和客户需求的变化也只涉及到设备端的修改,它便于设备的升级,UPnP设备在添加到网络中时,就可以立即被网络中拥有浏览器的客户端访问和控制。二、UPnP的组成UPnP网络是指通过采用UPnP协议的设备所组成的网络,它的基本组件是服务、设备和控制点:服务是UPnP网络中最小逻辑功能单元,由状态表、事件和控制服务器组成。状态表描述服务的当前状态;事件服务器用来管理来自控制点的事件订阅请求,并在服务的状态改变时向订阅者发送状态更新事件;而控制服务器则负责处理来自控制点的动作请求。UPnP设备由一组子设备或服务构成,同时多个设备下的子设备也通过逻辑组合构成新的设备。设备中的每个功能也可以当做一个逻辑子设备向外发布。控制点的功能是发现和控制其它设备,在控制点发现一个网络设备后,它会发出请求先获取设备描述和服务列表,再获取感兴趣的服务描述,然后通过动作请求来控制服务。控制点订阅设备的服务事件时,服务会在状态变化时向控制点发送的状态更新事件。一个控制点可以控制多个UPnP设备,也可以作为一个设备被其它控制点控制。三、UPnP的工作过程UPnP的工作过程UPnP协议栈四、UPnP的描述文档在UPnP的工作是基于UPnP描述文件的。UPnP描述文件分为设备描述文件服务描述文件。设备描述文件包括设备属性和它所提供的服务,一个标准设备描述文档如下所示:
  1. <?xml version="1.0"?>  
  2. <root xmlns="urn:schemas-upnp-org:XXXXXX">  
  3.  ......  
  4.   <device>  
  5.     <deviceType>urn:schemas-upnp-org:device: XXXXXX: X </deviceType>  
  6.  ……  
  7.     <UDN>uuid:XXXXXX</UDN>  
  8.     <UPC>……</UPC>  
  9.     <serviceList>  
  10.       <service>…… </service>  
  11.     </serviceList>  
  12.    <presentationURL>/设备展示URL地址</presentationURL>  
  13. </device>  
  14. </root>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一页
MariaDB 5.5 在 Windows 下的性能测试Linux下利用Valgrind工具进行内存泄露检测和性能分析相关资讯      Arm Linux  UPnP  UPnP设置 
  • 在ARM Linux上实现4G模块PPP拨号上  (03月29日)
  • 使用Eclipse集成开发环境开发ARM   (03月29日)
  • ARM-Linux汇编语法及它和ADS汇编转  (11/09/2014 18:33:59)
  • 使用Eclipse C/C++搭建ARM-Linux集  (03月29日)
  • ARM Linux 系统调用过程  (04/22/2015 06:09:32)
  • Linux下armcc和arm-linux交叉编译  (02/27/2014 17:03:20)
本文评论 查看全部评论 (0)
表情: 姓名: 字数