【问题标题】:Any examples/tutorials on using Intel UPNP's VirtualDirectory Handler?有关使用英特尔 UPNP 的 VirtualDirectory 处理程序的任何示例/教程?
【发布时间】:2012-09-09 22:21:51
【问题描述】:

我一直在 VB.NET 项目中使用 Intel 的 UPNP 库,尽管缺乏文档使其很难(字面意思是猜测我必须在每一行代码中使用什么属性/方法)我已经能够按照我的意愿弯曲它,并且我有一个在 Windows 上使用 UPNP 的功能非常强大的应用程序。

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

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

感谢您的帮助。

莱斯特

【问题讨论】:

  • 你在执行哪一部分?设备、控制点,还是两者兼而有之?如果只有一个,另一部分(不受您控制)是否发布 ContentDirectory 服务?您的目标是哪种数据传输?推(控制点 POST)或拉(设备 GET)?
  • 我都在实现;我的问题是指如何在设备上提供此功能,但我想我也必须在控制点上执行此操作。我想传输 JPEG 图像。控制点必须从设备中提取图像。

标签: windows vb.net directory intel upnp


【解决方案1】:

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

我建议您阅读 UPnP specs bundleMediaServer 文件夹中的 UPnP-av-ContentDirectory 文档(任何版本)。查找 CreateObject、DeleteObject、ImportResource、ExportResource。如果我上面的假设是正确的,你实际上不需要它们,但是为了理解 UPnP 中文件传输的含义。我承认对英特尔 UPnP 一无所知,因此请根据一般 UPnP 知识和随机全文搜索进行猜测。

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

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

一旦您的控制点知道资源 URL,您只需通过 HTTP GET 下载它。不需要花哨的 ImportObject,因为控制点也是目标存储。最后一部分在技术上根本与 UPnP 无关。

【讨论】:

  • 您的第一段正确地描述了我的情况。现在,让我明白这一点:我所要做的就是在我的设备中实现 ContentDirectory,然后我的控制点就会有一个 URL 来下载图像,对吧?
  • 是的。只要您的控制点也是您的目标存储,您的控制点就不需要 UPnP 服务。只有当控制点、源设备和目标存储是三个不同的设备时,才需要这样做。在您目前的情况下,问题甚至可能是,为什么还要使用 UPnP? :-)
  • 我刚刚完成了它。它按预期工作。感谢您的帮助。
猜你喜欢
  • 2012-11-14
  • 2023-03-22
  • 2016-02-11
  • 2013-02-24
  • 2014-04-15
  • 2011-03-05
  • 2013-03-04
  • 2016-10-22
  • 2015-04-08
相关资源
最近更新 更多