有关使用英特尔 UPNP 虚拟目录处理程序的任何示例/教程?



我一直在VB.NET项目中使用英特尔的UPNP库,尽管缺乏文档使它变得很难(从字面上猜测我必须在每一行代码中使用什么属性/方法),但我已经能够随心所欲地使用它,并且我有一个在Windows上使用UPNP的功能性很强的应用程序。

我的问题是,我现在希望能够将文件从设备主机传输到控制点。在谷歌上搜索答案表明,英特尔的UPNP使用嵌入式Web服务器来处理与UPNP相关的一切,我可以使用AddVirtualDirectory方法将自定义目录添加到我的设备中。但是,幸运结束了。没有文档,没有示例,什么都没有。

所以我的问题是:有人知道如何使用它吗?我所发现的是,该方法需要2个委托函数,声明为VirtualDirectoryHandler,但我不知道该如何处理这些函数。

谢谢你的帮助。

Léster

因此,为了明确需求:控制点需要从设备中提取(下载)图像。设备不需要访问(推送)控制点。没有其他设备会尝试访问已存储在控制点上的图像。因此,只有设备需要实现ContentDirectory,而控制点则不需要。

我建议您阅读UPnP规范捆绑包的MediaServer文件夹中的UPnP av ContentDirectory文档(任何版本)。查找CreateObject、DeleteObject、ImportResource、ExportResource。如果我上面的假设是正确的,你实际上不需要它们,但为了理解UPnP中的文件传输意味着什么。我承认对英特尔UPnP一无所知,所以根据UPnP的一般知识和随机全文搜索进行猜测。

要启用对象下载,设备需要提供可浏览的媒体存储。基本上,您需要在设备上实现GET请求处理程序。UPnP只不过是一个由网络服务器组成的特殊网络,其中加入了一些多播和额外的报头。这就是"英特尔的UPNP使用嵌入式Web服务器"的原因任何UPnP设备都是网络服务器。"英特尔UPnP"已在MediaServerDevice.WebServer_OnHeaderReceiveSinkWebServer_OnPacketReceiveSink中包含VirtualDirectoryHandler的实现。很有可能,您可以使用这个开箱即用的MediaServerDevice.cs来实现ContentDirectory。看看VirtualDirectoryHandler在整个SDK中的用法,了解如何使用它

控制点下载器将需要执行AVTransport.Browse命令来查找要下载的图像的资源URL。英特尔的MediaBrowser.cs看起来很有前景。我建议您也阅读上面提到的文档的开头,以深入了解UPnPContentDirectory的导航结构。如果有疑问,请从英特尔的Tools套件运行DeviceSpy并手动查询您的设备。以ObjectID"0"开头。没有什么比看到原始XML DIDL响应更能帮助您理解ContentDirectory了。

一旦您的控制点知道资源URL,您只需通过HTTPGET下载即可。不需要花哨的ImportObject,因为控制点也是目标存储。最后一部分从技术上讲根本不是关于UPnP的。

最新更新