0

对于应用程序,我必须发现所有运行的“我的”设备及其版本,以向它们推送更新(通过另一个协议)。

但是我不知道如何为发现对象指定它必须搜索的 URI,而不必指定对象。

注意:我知道我也可以使用空 URI 字符串进行发现,然后在我收到的设备上进行过滤,但由于我在网络上有大量(600 多个)UPnP 设备,但有少量 UPnP 设备我需要搜索(~20),这需要很多时间,我正在寻找一种有效的方法。

所以,如果我的 URN 如下:urn:upnp-org:device:TestDevice:2.2.5,并且我想拥有 urn:upnp-org:device:TestDevice:*,我应该如何进行?

我试过

urn:upnp-org:device:TestDevice: urn:upnp-org:device:TestDevice:*

有通配符吗?占位符?

4

1 回答 1

2

我认为您在滥用M-SEARCH. STversion 表示接口版本,而不是实现版本,更高版本预计将完全向后兼容。因此,您只需填写已知的最低版本即可搜索设备任何版本所有设备都会响应您,但使用您搜索的版本,而不是它们的实际版本(因为它们是向后兼容的)。没有什么能比得上“通配符”,因为设备应该尽最大努力满足要求,而不是吹嘘它们的实际版本。ST:M-SEARCH

我建议彻底阅读 UPnP 设备架构文档,第 1.2.2 和 1.2.3 章围绕 M-SEARCH 请求和响应。

如果您想使用 UPnP实现版本发现(这是完全合法的),我建议使用返回该信息的函数来实现自定义服务。据我了解,您已经有一个自定义设备。

于 2013-02-10T21:39:36.263 回答