1

我正在编程一些关于 upnp 的东西,我想清除一些东西:) 当我使用多播 M-Search 消息进行搜索时,设备必须响应,类似这样的东西(它不是完整的消息,我缩短了它)

HTTP/1.1 200 OK
CACHE-CONTROL: max-age = seconds until advertisement expires
DATE: when response was generated
EXT:
LOCATION: URL for UPnP description for root device

因此,位置是一些 IP 和端口,我可以从中获得描述。现在,我想用单播搜索特定的设备。我的问题是:当我尝试使用 UNCAST 搜索消息搜索此设备时,我可以使用此地址吗?或者设备正在另一个地址上监听单播 msearch 消息?:) 我已阅读 upnp 设备架构 pdf 文件

4

1 回答 1

1

是的,您可以而且必须继续使用单播。LOCATION不仅仅是“一些IP和端口”,而是设备描述的完整资源位置。您不能对单个地址进行多播 :) 不再需要“搜索此设备”。您只需使用 HTTP GET 请求该 URL。而且您基本上会获得更多特定服务的 URL。

如果您正在“对 upnp 进行编程”并且遇到此类基本问题,我建议您下载UPnP 规范包并阅读文档UPnP-arch-DeviceArchitecture。它以易于理解的步骤描述了 UPnP 的搜索和查询阶段如何工作。

更新OP的澄清:

如果设备通过带有值的多播消息SEARCH宣布自己,则设备的重新发现作为对从原始响应(多播)和标准端口 1900 或特定端口已知的 IP 的单播请求发生。因此,如果设备需要重新发现并且没有宣布自己,则端口默认为 1900。另请参阅 UPnP 设备架构中的下一页 32,HOST头字段的描述。NOTIFYSEARCHPORT.UPNP.ORG

但是请注意,这种重新发现不应该是必要的,或者很少是必要的。UPnP 设备应在连接到网络时使用NOTIFY类型为 的多播数据包宣布自己ssdp:update,并ssdp:byebye在断开连接时发出类型。此外,大多数设备都有事件变量,控制点应自动订阅这些变量,并按固定租用时间(默认为 30 分钟)续订它们的订阅。因此无论如何都会发现设备突然消失(通过订阅续订失败)。

于 2012-11-27T08:56:37.123 回答