DLNA-UPnP

DLNA和UPnP之间什么关系?

  • 定义了服务的功能、接口、参数。

相关名词

DLNA (Digital Living Network Alliance)数字生活网络联盟,狭义理解为家庭网络中的多屏互动,专业来说是一种媒体共享技术。按照功能分为DMS DMP DMR DMC。

UPnP(Universal Plug and Play):通用即插即用。DLNA是基于UPnP协议进行发现、选择设备的。

DMP(Digital Media Player):数字媒体播放器。能从DMS/M-DMS上查找并获取媒体内容并播放和渲染显示。比如智能电视、家庭影院等。

DMS(Digital Media Server):数字媒体服务器。提供媒体获取、记录、存储和输出功能。同时,内容保护功能是对DMS的强制要求。DMS总是包含DMP的功能,并且肯能包含其他智能功能,包括设备/用户服务的管理;丰富的用户界面;媒体管理/收集和分发功能。DMS的例子有PC、数字机顶盒(附带联网,存储功能)和摄像机等等。

DMC(Digital Media Controller):查找DMS的内容并建立DMS与DMR之间的连接并控制媒体的播放。如遥控器。

DMR(Digital Media Renderer):通过其他设备配置后,可以播放从DMS上的内容。与DMP的区别在于DMR只有接受媒体和播放功能,而没查找有浏览媒体的功能。比如显示器、音箱等。

SOAP -Simple Object Access Protocol简单对象访问协议。它是一种应用程序之间进行数据通讯的机制。它定义如何使用xml与http来执行远程过程调用,包括控制点如何发送命令消息给设备,设备收到命令消息后如何发送响应消息给控制点。

SSDP-Simple Service Discovery Protocol ,简单服务发现协议。 A multicast discovery and search mechanism that use a multicastvariant of HTTP over UDP.具体包括控制点如何发现网络上有哪些服务,以及这些服务的资讯,还有控制点本身宣告它提供哪些服务。

GENA:Generic Event Notification Architecture ,通用事件通知架构,定义在控制点想要监听设备的某个服务状态变量的状况时,控制点如何传送订阅信息并如何接收这些信息。The event subscription and notification protocol defined in “Eventing”

DLNA协议

数字生活网络联盟(英语:Digital Living Network Alliance,简称:DLNA)是一个由消费性电子、移动电话以及电脑厂商组成的联盟组织。该组织的目标在于创建一套可以使得各厂商的产品互相连接,互相适应的工业标准,从而为消费者实现数字化生活。联盟成员包括飞利浦、三星电子、松下、惠普、索尼、微软、英特尔和诺基亚在内的众多业界领袖。DLNA委员会已经于2017年1月5日正式解散,原因是旧的标准已经无法满足新设备的发展趋势,DLNA标准将来也不会再更新。但是DLNA协议的使用依然比较广泛,短时间内不会退出历史舞台,在某些情况下依然是最好的解决方案之一。DLNA不是技术,而是一种方案,一种大家可以遵守的规范,其各种技术和协议都是目前所应用很广泛的技术和协议(SSDP、SOAP等)。

DLNA协议栈

DLNP对等协议特点

  • DLNA是索尼、英特尔、微软等发起。苹果当时也是DLNA联盟的成员,而后来退出了并自立门户。 DLNA与苹果的AirPlay功能比较类似,协议也大体相同,他们都可以让你手机中的媒体内容投放到电视屏幕里。不同的是手机上的DLNA 并没有类似Apple TV的AirPlay 的镜像功能,也没有Apple TV 所支持的双屏体游戏体验。目前DLNA更多只是能将手机的照片和视频投送到大屏幕中。

  • Miracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连为基础的无线显示标准。支持此标准的设备可通过无线方式分享视频画面,例如手机可通过Miracast将影片或照片直接在电视或其他装置。与DLNA不同的是,Miracast 也有类似于AirPlay 的镜像功能,可以将手机中屏幕内容直接投放到高清电视屏幕里,这样你也可以通过电视屏幕来玩游戏了。

  • AirPlay 是苹果开发的一种无线技术,可以通过WiFi将iPhone 、iPad、iPod touch 等iOS 设备上的包括图片、音频、视频通过无线的方式传输到支持AirPlay 设备。AirPlay 还有一个特殊的功能,这一功能叫AirPlay镜像,配合上Apple TV这以功能可以将iPhone 或者iPad 上的画面无线传输到电视上,也就是说你设备显示的是什么电视屏幕显示就就是什么,而不仅限于图片和视频。所以用这一个功能来玩游戏是非常酷的,你可以拿着iPad 来当做方向盘,然后看着大屏玩游戏。另外AirPlay镜像最强大地方是它可以实现双屏游戏,让你的游戏有更多的交互。

  • DLNA特点

    不管是UPnP还是DLNA都是不存在验证授权机制,也就是说只要进入局域网就可以任意调用。

    UPnP一般用于路由器上路由配置,链路转发,然后服务一般默认开启,这个利用场景相对风险较低一些,因为需要在其他设备存在问题,且路由器为公网ip的情况,才能实现公网直接访问的利用场景,其他场景的利用都是没有必要使用到这个场景的(也可能是我没有想到)。

    DLNA服务一般用于投屏,这个就是直接可以利用的;然后还有特殊场景,视频流拉取,操作指令控制等。

DLNA投屏流程介绍

DLNA投屏简介

UPnP协议

通用即插即用(英语:Universal Plug and Play,简称UPnP)是由“通用即插即用论坛”(UPnP™ Forum)推广的一套网络协议。该协议的目标是使家庭网络(数据共享、通信和娱乐)和公司网络中的各种设备能够相互无缝连接,并简化相关网络的实现。UPnP通过定义和发布基于开放、因特网通讯网协议标准的UPnP设备控制协议来实现这一目标。 UPnP这个概念是从即插即用(Plug-and-play)派生而来的,即插即用是一种热拔插技术。

UPnP协议栈

UPnP组件

完整的UPnP服务系统由支持UPnP的网络和符合UPnP规范的设备共同构成的。可以抽象成3BOX模型去理解。

整个系统是由Device、Service、和Control Point三部分所构成。各种状态信息,都保存在XML文件中,不同用途的信息,格式不同。保证可以各取所需,不会混淆。

  • 设备(Device)

这里是指符合UPnP规范的设备。一个UPnP设备可以看成一个包含服务并嵌套了常规设备的“容器” 。就是说,UPnP之下的设备不能仅仅理解为硬件意义上的设备,而应当包括服务功能。

  • 服务(Service)

设备执行用户请求的控制过程,可划分成一个个很小的阶段或单位,每个单位就称为一个服务。

其它设备服务,也是用这样思路来描述和定义的,一个设备也可以被定义多个服务。不论是设备的定义信息和服务的描述信息,都保存在一个XML文件中,这个文件也是UPnP协议构成的一部分。当设备建立和使用服务的时候,XML文件可以与它们进行关联。

XML文件中还有一个很关键的“状态表”,状态表可进一步分为“服务状态表”和“事件状态表”。整个UPnP设备运行的全过程内,状态表贯穿始终,当设备状态改变的时候,例如发生参数变化或状态刷新的时候,立即就在“状态表”中反映出来。

  • 控制点(Control Point):

在UPnP网络中,用户请求设备执行的控制是通过控制点实现的,控制点首先是一个有能力控制别的设备的控制者,还要具有在网络中 “发现”控制目标的能力。我理解,控制点就比如是用手机向大屏幕投屏,手机就是一个控制点。在发现(控制目标)之后,控制点应当:

①取得设备的描述信息并得到所关联的服务列表。

②取得相关服务的描述。

③调用控制服务行为。

④确定服务的事件 “源”,不论何时,只要服务状态发生改变,事件服务器会立即向控制点发送一个事件信息。

UPnP工作流程

1.寻址

❓地址的获得方式

地址是整个UPnP系统工作的基础条件,每个设备都应当是DHCP(Dynamic Host Configuration Protocol动态主机配置协议)的客户。

2.发现

可分成两种情况,一种是在有控制请求之后,在当前的网络中查找有无对应的可用设备;另一种情况是某一设备接入网络、取得IP地址之后,就开始向网络“广播”自己已经进入网络,即寻找控制请求。UPnP使用简单发现协议(SSDP)来完成发现,这是一个工作在UDP上的HTTP协议。

当一个设备加入网络,它将向组播发送消息,广播它可以提供的服务。

当控制点加入网络时,它也将组播发送消息,寻找它感兴趣的服务。

3.描述

控制点需要依据ULR找到该设备的描述文件,从这些文件中读取更多的描述信息。描述信息的范围很广,一般都是由设备的制造厂商提供的。主要的描述项目有:控制的模式名称和模式号码、设备序列号、制造厂商名称、厂商的WEB的ULR等等。这些一般都存放在特定的XML文件中。

这个描述文件的地址,会在设备对控制点的响应中传递,在回复的XML中,有一个LOCATION: http://192.168.2.3:49153/description.xml这样的字段。

打开网页获取描述文件:

<?xml version="1.0" encoding="utf-8"?><root xmlns="urn:schemas-upnp-org:device-1-0">  <specVersion> <major>1</major>  <minor>0</minor> </specVersion>  <device> <deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>  <presentationURL>/</presentationURL>  <friendlyName>成精了的电视</friendlyName>  <manufacturer>XXXX</manufacturer>  <manufacturerURL>http://www.xxx.com</manufacturerURL>  <modelDescription>xxx Media Render</modelDescription>  <modelName>xxxxx</modelName>  <modelURL>http://www.xxx.com</modelURL>  <UDN>uuid:F7CA5454-3F48-4390-8009-dce3a07b5e48</UDN>  <UID>-1254112285</UID>  <serviceList> <service> <serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType><serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>  <SCPDURL>/dlna/Render/AVTransport_scpd.xml</SCPDURL>  <controlURL>_urn:schemas-upnp-org:service:AVTransport_control</controlURL><eventSubURL>_urn:schemas-upnp-org:service:AVTransport_event</eventSubURL></service>  <service><serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType><serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>  <SCPDURL>/dlna/Render/ConnectionManager_scpd.xml</SCPDURL><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:RenderingControl:1</serviceType><serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>  <SCPDURL>/dlna/Render/RenderingControl_scpd.xml</SCPDURL>  <controlURL>_urn:schemas-upnp-org:service:RenderingControl_control</controlURL><eventSubURL>_urn:schemas-upnp-org:service:RenderingControl_event</eventSubURL></service> </serviceList>  <av:X_RController_DeviceInfo xmlns:av="urn:mi-com:av">  <av:X_RController_Version>1.0</av:X_RController_Version>  <av:X_RController_ServiceList> <av:X_RController_Service> <av:X_RController_ServiceType>controller</av:X_RController_ServiceType><av:X_RController_ActionList_URL>http://192.168.2.3:6095/</av:X_RController_ActionList_URL> </av:X_RController_Service>  <av:X_RController_Service> <av:X_RController_ServiceType>data</av:X_RController_ServiceType><av:X_RController_ActionList_URL>http://api.tv.xx.com/bolt/3party/</av:X_RController_ActionList_URL> </av:X_RController_Service> </av:X_RController_ServiceList> </av:X_RController_DeviceInfo> </device>  <URLBase>http://192.168.2.3:49152/</URLBase>
</root>

4.控制

要控制某个设备,控制点必须先发送一个控制行为请求,要求设备开始服务,然后再按设备的ULR发送相应的控制消息,控制消息就是放置在XML文件中的那些SOAP格式的信息。最后,服务会返回响应信息,指出服务是成功或是失败。UPnP使用SOAP完成控制。SOAP工作在HTTP上,使用XML来描述远程调用并返回结果。

往哪传送控制指令?在设备返回的可提供的服务列表里会有对应服务的controlURL,

5.事件

在服务进行的整个时间内,只要变量值发生了变化或者模式的状态发生了改变,就产生了一个事件,系统将修改上述提到的事件列表的内容。随之,事件服务器把事件向整个网络进行广播。另一方面,控制点也可以事先向事件服务器预约事件信息,保证将该控制点感兴趣的事件及时准确地传送过来。

这些消息也是通过XML传递的。控制点从哪里订阅这个设备的某个服务的事件呢?在ServiceList里,有一个eventSubURL。eventSubURL是用来向目标设备订阅该服务相关的事件回调的,需要控制端运行一个ServerSocket监听tcp请求。控制方监听事件,有事件发生就对事件进行回调处理。

6.展示presentation

HTML

被控制的设备有了URL可以展示运行的情况,可以让控制点去网页上看状态或进行控制。

SSDP message format

Simple Service Discovery Protocol ,简单服务发现协议。

SSDP使用了HTTP1.1的部分header,但并不是全部因为它是基于UDP实现的,所以有一些自己的规则。

SSDP消息必须有一条起始行start-line、消息头header fields。不能有消息体message body,如果接受到的SSDP message有消息体,要忽略掉。

1 Discovery

设备:Advertisement

指的是一个设备进入到家庭网络后,要向控制点广播它能提供的服务。它需要向一个标准地址和端口239.255.255.250:1900进行广播,控制点也是监听这个地址和端口的,

Advertisement protocol stack

设备的Notify消息

设备:就是自己告诉别人,让别人来找自己,需要广播什么信息呢?以下字段都是必选项。

NOTIFY * HTTP/1.1
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age=66
LOCATION: http://192.168.2.3:49153/description.xml
NT: upnp:rootdevice
NTS: ssdp:alive
SERVER: Linux/3.10.79, UPnP/1.0, Portable SDK for UPnP devices/1.6.13
USN: uuid:F7CA5454-3F48-4390-8009-2c3aed46c9a9::upnp:rootdevice

还有两个需要关注的值:NT和NTS,前者是Notify Type(与Search中的ST类似),后者表示NT的子类型,其值只可以是ssdp:alive或ssdp:byebye,目标设备会在生命周期中定期发送alive组播,在正常退出时发送byebye组播,也有实现会在目标设备上线时先发送byebye然后发送alive,便于控制端及时更新设备信息。NT有较多类型,我们只关注upnp:rootdevice类型的Notify即可。

控制点:Search

控制点使用search去发现设备。

Search Protocol Stack

M-SEARCH * HTTP/1.1
ST: upnp:rootdevice
HOST: 239.255.255.250:1900
MX: 3
MAN: "ssdp:discover"

其中ST是Search Type,常见的ST有ssdp:all、upnp:rootdevice、uuid:device-某UUID、urn:schemas-upnp-org:device:device-Type:version等,投屏这里使用的是upnp:rootdevice,HOST为组播地址,MX为最大等待时间,MAN为固定格式。

Search Response

一个响应消息的例子:

<?xml version="1.0" encoding="utf-8"?><root xmlns="urn:schemas-upnp-org:device-1-0">  <specVersion> <major>1</major>  <minor>0</minor> </specVersion>  <device> <deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>  <presentationURL>/</presentationURL>  <friendlyName>成精了的电视</friendlyName>  <manufacturer>XXXX</manufacturer>  <manufacturerURL>http://www.xxx.com</manufacturerURL>  <modelDescription>xxx Media Render</modelDescription>  <modelName>xxxxx</modelName>  <modelURL>http://www.xxx.com</modelURL>  <UDN>uuid:F7CA5454-3F48-4390-8009-dce3a07b5e48</UDN>  <UID>-1254112285</UID>  <serviceList> <service> <serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType><serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>  <SCPDURL>/dlna/Render/AVTransport_scpd.xml</SCPDURL>  <controlURL>_urn:schemas-upnp-org:service:AVTransport_control</controlURL><eventSubURL>_urn:schemas-upnp-org:service:AVTransport_event</eventSubURL></service>  <service><serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType><serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>  <SCPDURL>/dlna/Render/ConnectionManager_scpd.xml</SCPDURL><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:RenderingControl:1</serviceType><serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>  <SCPDURL>/dlna/Render/RenderingControl_scpd.xml</SCPDURL>  <controlURL>_urn:schemas-upnp-org:service:RenderingControl_control</controlURL><eventSubURL>_urn:schemas-upnp-org:service:RenderingControl_event</eventSubURL></service> </serviceList>  <av:X_RController_DeviceInfo xmlns:av="urn:mi-com:av">  <av:X_RController_Version>1.0</av:X_RController_Version>  <av:X_RController_ServiceList> <av:X_RController_Service> <av:X_RController_ServiceType>controller</av:X_RController_ServiceType><av:X_RController_ActionList_URL>http://192.168.2.3:6095/</av:X_RController_ActionList_URL> </av:X_RController_Service>  <av:X_RController_Service> <av:X_RController_ServiceType>data</av:X_RController_ServiceType><av:X_RController_ActionList_URL>http://api.tv.xx.com/bolt/3party/</av:X_RController_ActionList_URL> </av:X_RController_Service> </av:X_RController_ServiceList> </av:X_RController_DeviceInfo> </device>  <URLBase>http://192.168.2.3:49152/</URLBase>
</root>

2 Description

消息都是使用xml文件进行描述。

3 Control

控制信息的传递是基于SOAP协议的,Simple Object Access Protocol.简单对象访问权限。向controlURL发送控制指令,对应一个Action,设备会回应这个消息的结果。同时,这个action在设备执行后可能会产生一个状态变量的变化,这就产生了一个事件event.

如果要传送的数据量非常大的话就不推荐使用SOAP,可以使用带外传输。

控制阶段对传送的SOAP消息的响应,必须是从哪接收的请求,就把响应发回哪去(来和回的IP地址必须相同)

Control Protocol Stack

Action Request

❓SOAP 自动转换成soap消息格式?工具?

head部分

POST /_urn:schemas-upnp-org:service:AVTransport_control HTTP/1.1
Connection: close
SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
Content-Type: text/xml;charset="utf-8"
Content-Length: 1464
Host: 192.168.2.3:49152
User-Agent:

Body部分

<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:SetAVTransportURI xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">  <InstanceID>0</InstanceID>  <CurrentURI>http://xxx.xxx.com/xxx.m3u8?bizid=xxx&amp;txSecret=fcexxxxxab4cf1b8bbee6efbe6668bd4&amp;txTime=5c3c5de1&amp;uid=0</CurrentURI>  <CurrentURIMetaData>&lt;DIDL-Lite xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sec="http://www.sec.co.kr/"&gt;&lt;item id="123" parentID="-1" restricted="1"&gt;&lt;upnp:storageMedium&gt;UNKNOWN&lt;/upnp:storageMedium&gt;&lt;upnp:writeStatus&gt;UNKNOWN&lt;/upnp:writeStatus&gt;&lt;dc:title&gt;Video&lt;/dc:title&gt;&lt;dc:creator&gt;QGame&lt;/dc:creator&gt;&lt;upnp:class&gt;object.item.videoItem&lt;/upnp:class&gt;&lt;res protocolInfo="http-get:*:video/*:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000"&gt;http://xxx.xxx.com/xxx.m3u8?bizid=xxx&amp;amp;txSecret=fcexxxxxab4cf1b8bbee6efbe6668bd4&amp;amp;txTime=5c3c5de1&amp;amp;uid=0&lt;/res&gt;&lt;/item&gt;&lt;/DIDL-Lite&gt;</CurrentURIMetaData> </u:SetAVTransportURI> </s:Body>
</s:Envelope>

其中Action的列表:

<u:Action xmlns:u="服务类型"><参数名1>参数值1</参数名1><参数名2>参数值2</参数名2>...
</u:Action>

举个例子,如果是action是play:

<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">  <s:Body> <u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">  <InstanceID>0</InstanceID>  <Speed>1</Speed> </u:Play> </s:Body>
</s:Envelope>

如果执行ACTION失败,也会响应一个error

在Upnp的文档中有错误状态码。

4 Eventing

单播架构

Unicast Eventing Protocol Stack

订阅者请求订阅

只有header fields,没有消息体。callback标签里的内容是设备应该往哪推送事件消息?是订阅者要放订阅消息的地方。也可以不止有一个回调地址,但设备至少发送一个。

发布者接受订阅

如果信息足够,发布者就会发布消息。同样没有消息体。

多播架构

对应的还有多播架构。不赘述。但是,多播架构底层的传输协议的UDP。而不是TCP。

5 Presentation独立功能

❓可以理解成一个前端交互页面吗?

Presentation,在控制点发现了设备、并找到了设备的描述后,控制点就准备开始presentation了。Presentation是基于HTML的页面,能够控制或查看设备的状态,Presentation是对控制的补充。presentationURL在device description中,

Presentation Protocol Stack

基于HTTP来完成网页的加载。

DLNA UPnP协议简介相关推荐

  1. upnp协议简介(二)

    关于DLNA框架 1.Networking & Connectivity 为了解决物理设备连通问题, 主要依赖于Ethernet,802.11,Ipv4协议栈,Ipv6协议栈. TCP/IP协 ...

  2. upnp协议简介(一)

    UPnP全名是Universal Plug and Play,主要是微软在推行的一个标准.简单的来说,UPnP 最大的愿景就是希望任何设备只要一接上网络,所有在网络上的设备马上就能知道有新设备加入,这 ...

  3. UPnP协议学习笔记-简介

    [什么是UPnP技术?] UPnP(Universal Plug and Play)技术是针对智能家电.无线设备和各种类型的个人电脑进行普遍点对点(P2P)网络连接而设计的一种架构.它被设计为连接到a ...

  4. UPnP协议编程实践

    本专题主要是介绍UPnP的工作原理和基本概念,包括SSDP.GENA和FXPP等基本协议,以及在Linux下如何使用Intel提供的UPnP开发包实现UPnP控制点和设备.本文是这个专题的第一篇,主要 ...

  5. 投放屏幕upnp协议探究抓包

    要了解DLNA需要了解upnp,因为DLNA在upnp之上 whireshark 抓包工具准备 先把whireshark打开 使用过滤器把网关的包去掉,不然干扰太多,首先说明,只要发包网关一定会发很多 ...

  6. GPRS/NFC/ 红外线/ 传感器/ 串口 ,DLNA/UPnP 等

    移植bluetooth和wifi,bluez移植.  <深入理解Android:Wi-Fi,NFC和GPS>章节连载[节选]-- http://blog.csdn.net/Innost/a ...

  7. 基于cling2.0的Android DLNA/Upnp客户端基本开发成功

    最近花了2个月的时间,基于cling2.0协议栈做了个Android DLNA/Upnp客户端,实现了DMS,DMR,DMC的主要功能,全面打通了Upnp协议,某些方面已经超越BubbleUpnp,例 ...

  8. 什么是UPNP协议:UPNP协议作用及启用路由器UPNP支持的方法详细介绍

    目录 [隐藏] UPNP简介 基本概念 官网解释 以下是微软官方网站对UPnP的解释: 以下是BC官方网站对UPnP的解释: UPnP是用来干什么的? 经典应用 网络地址转换 NAT 穿越技术 实际应 ...

  9. UPnP协议介绍和Android代码实现

    UPnP协议介绍 一. UPnP简介 英文名称:Universal Plug and Play 中文译名:通用即插即用 UPnP是由"通用即插即用论坛"(UPnP™ Forum)推 ...

最新文章

  1. k8s服务器修改ip,[转载][K8S] Kubernetes 集群变更IP地址
  2. 新手入门Web前端,你需要克服这几点困难
  3. 模线性方程(中国剩余定理+扩展中国剩余定理)
  4. 序列化和反序列化(一)——概述
  5. 把视频转换成图片帧的代码
  6. CSP考试 2016年04月第3题 路径解析 C++实现
  7. 「实战」南京房价的秘密——准备篇
  8. JS数据结构与算法-队列结构
  9. 贪心算法题目 推销员
  10. orocos KDL 由位置计算力矩
  11. Dota数据集切割以及保存为yolo和voc格式——HBB
  12. 当下垂直搜索引擎集锦一
  13. android 服务英文,Android recovery 模式 中英文对照
  14. 正则校验IP及端口和域名和手机号、座机同步校验
  15. C++“读取“大量数据时--快读
  16. AdmExpress 国际仓储转运系统/海淘转运系统 1.0 正式版发布
  17. 格鲁夫给经理人的第一课
  18. MCU电子方案开发 MUC单片机 EM78P372N 8位OTP微控制器
  19. Windows解决运行slmgr.vbs -xpr 找不到应用程序问题
  20. (3) openssl genrsa(生成rsa私钥)

热门文章

  1. 【比特大数据】第一辑:手机信令大数据格式及应用价值
  2. 以SimpleWiFi串口转WiFi模块S2WM02为例说明ModbusTCP与ModbusRTU区别
  3. KingSCADA通过ODBC连接Oracle数据库
  4. pixhawk飞控调试_如何用开源飞控PIXHAWK进行二次开发?
  5. 透视perspective(CSS3)
  6. 解决 HP Quality Center 在IE9下无法打开问题
  7. Freekan5.9-热播影视系统,完美修复众多BUG完整安装包--视频接口修复修复版
  8. 把《算法的乐趣》随书源码放在GitHub上了
  9. 计算机考研如何择校,考研如何择校?——知己知彼,百战不殆
  10. 海量3dsmax免费视频教程下载