upnp,设备演示地址

时间:2012-11-26 18:01:59

标签: upnp

我正在编写关于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和端口,从那里我可以获得描述。现在,我想搜索具有单播的特定设备。我的问题是:当我尝试使用UNICAST搜索消息搜索此设备时,我可以使用此地址吗?或设备正在侦听另一个地址的单播msearch消息? :)我已阅读upnp设备架构pdf文件

1 个答案:

答案 0 :(得分:1)

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

如果你是“编程关于upnp的东西”并且遇到这类基本问题,我建议下载UPnP specifications bundle并阅读文档 UPnP-arch-DeviceArchitecture 。它以可理解的步骤描述了UPnP的搜索和查询阶段如何工作。

根据OP的澄清更新:

如果设备通过SEARCH多播宣布自身,则重新发现设备作为从原始响应(到多播NOTIFY)以及标准端口1900或特定端口的IP的单播请求发生带有SEARCHPORT.UPNP.ORG值的邮件。因此,如果设备需要重新发现并且没有宣布自己,则端口默认为1900.另请参阅UPnP设备架构中的下一页32, HOST 标头字段的说明。

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