本文主要参考——这——三——篇——博文。
UPnP是通用即插即用(Universal Plug and Play)的缩写,主要用于智能设备之间的互通互联。使用UpnP协议不需要任何驱动,可以运行在各种操作系统上。在家庭和办公场所等可以连接局域网的地方都可以利用Upnp协议实现设备的互通互联。
UPnP有六个步骤:
任何设备加入局域网后,想通过Upnp协议实现通信,必须首先获得IP地址,一般可以通过DHCP协议自动获取
连接到网络上的设备确定了IP地址之后,就会进入发现操作阶段。设备加入局域网后通过SSDP(Simple Service Discovery Protocol,简单服务发现协议)进行发现操作。SSDP协议允许设备发送广播,通知Control Points自己拥有的服务,而当一个CP进入网络后,SSDP协议允许它搜索网络上的可用设备。这两种情况下的组播消息一般都是设备和服务的基本信息。如它的类型,唯一标识符,当前状态参数等等。
CP获取了设备的基本信息后UUID,URL之后还需要知道更多信息,如设备的状态,可执行的动作等。这时需要通过设备的URL访问设备,获取更多的服务描述信息。
拿到设备和服务描述后,怎么控制设备呢?设备描述提供Control URL,CP通过SOAP协议向Control URL发送操控请求,SOAP协议含有消息Body,包含Action invocation,指示如何控制设备。可能还要传参数,比如想播放一个视频,要把视频的URL传过去;设备收到后要respone,表示能不能执行调用,出错的话会返回一个错误代码。
subscriber(通常是个CP)向publisher(通常是个service)发送订阅消息(subscribe),更新订阅消息(renewal),退订消息(cancel)。publisher向subscriber推送订阅(event:SIDX)。事件的订阅和推送这块用的通信协议是GENA(General Event Notification Architecture) ,通过HTTP/TCP/IP传送。