upnp-inspector - Python UPnP framework analyser
UPnP协议即通用即插即用英文是Universal Plug and Play,缩写为UPnP。UPnP规范基于TCP/IP协议和针对设备彼此间通讯而制订的新的Internet协议。
UPnP 的应用范围非常大,以致足够可以实现许多现成的、新的及令人兴奋的方案,包括家庭自动化、打印、图片处理、音频 / 视频娱乐、厨房设备、汽车网络和公共集会场所的类似网络。它可以充分发挥 TCP/IP 和网络技术的功能,不但能对类似网络进行无缝连接,而且还能够控制网络设备及在它们之间传输信息。在 UPnP 架构中没有设备驱动程序,取而代之的是普通协议。
服务:
设备执行用户请求的控制过程,可划分成一个个很小的阶段或单位,每个单位就称为一个服务。每一个服务,对外都表现为具体的行为和模式,而行为和模式又可以用状态和变量值进行描述。
XML文件中还有一个很关键的“状态表”,状态表可进一步分为“服务状态表”和“事件状态表”。整个UPnP设备运 行的全过程内,状态表贯穿始终,当设备状态改变的时候,例如发生参数变化或状态刷新的时候,立即就在“状态表”中反映出来。如控制服务器在接收到设置时间 的行为请求时,就立即执行请求(对时操作),并给出响应,同时更新状态表中的有关数据。相应地,事件服务器负责向对此事件感兴趣的设备公布所发生的状态改 变。
控制指针:
工作过程:
UPnP在控制指针和被控制设备之间提供通讯功能。而网络介质、TCP/IP协议、HTTP仅提供基本的连接和IP地址分配。整个工作过程需要处理六个方面的内容,即设备寻址、发现设备、对设备的描述、设备控制、设备事件、设备表达。
UPnP的工作流程:设备加入网络后通过设备寻址就 可自动获得IP地址,通过设备发现,控制点就可知道网络上存在哪些设备,通过设备描述控制点就可知道设备详细信息以及设备提供哪些服务,通过设备控制控制 点可以使用设备的服务,通过设备事件设备就可以将其状态变化及时告诉给感兴趣的控制点,通过设备表达控制点可以用浏览器察看设备状态和控制设备。通过上述 的六个方面,UPnP设备可以做到在“零配置”的前提下提供了联网设备之间的自动发现、自动声明、“直接”信息交换和互操作等功能,真正实现“设备即插即用”。
我们在做DLNA开发的时候都是用现有的upnp开源框架,upnp官网地址是:
http://upnp.org/
相关SDK地址为http://upnp.org/sdcps-and-certification/resources/sdks/
The GUPnP framework consists of the following libraries:
- GSSDP implements resource discovery and announcement over SSDP.
-
GUPnP implements the UPnP specification: resource announcement and discovery, description, control, event notification, and presentation (GUPnP includes basic web server functionality through libsoup). GUPnP does not include helpers for construction or control of specific standardized resources (e.g. MediaServer); this is left for higher level libraries utilizing the GUPnP framework.
- GUPnP-AV is a collection of helpers for building AV (audio/video) applications using GUPnP.
- GUPnP-DLNA is a small utility library that aims to ease the DLNA-related tasks such as media profile guessing, transcoding to a given profile, etc.
Documentation
-
FAQ
-
gssdp http://developer.gnome.org/gssdp/unstable/
-
gupnp http://developer.gnome.org/gupnp/unstable/
-
gupnp-av http://developer.gnome.org/gupnp-av/unstable/
-
gupnp-igd http://developer.gnome.org/gupnp-igd/unstable/
-
gupnp-dlna http://developer.gnome.org/gupnp-dlna/unstable/
libsoup
About
libsoup is an HTTP client/server library for GNOME. It uses GObjects and the glib main loop, to integrate well with GNOME applications, and also has a synchronous API, for use in threaded applications.
Features include:
-
Both asynchronous (GMainLoop and callback-based) and synchronous APIs
- Automatically caches connections
- SSL Support using GnuTLS
- Proxy support, including authentication and SSL tunneling
- Client support for Digest, NTLM, and Basic authentication
- Server support for Digest and Basic authentication
- Client and server support for XML-RPC