我正在编写一些关于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和端口,我可以从中获取描述。现在,我想搜索具有单播的特定设备。我的问题是:当我尝试使用单播搜索消息搜索此设备时,是否可以使用此地址?或者设备正在监听另一个地址的单播msearch消息?:)我已读取upnp设备架构pdf文件
发布于 2012-11-27 16:56:37
是的,您可以而且必须继续使用单播。LOCATION不仅仅是设备描述的“某个IP和端口”,而是一个完整的资源位置。您不能对单个地址进行多播:)不再需要“搜索此设备”。您只需使用HTTP GET请求该URL即可。基本上,您将获得更多的特定服务的URL。
如果你正在“编写一些关于upnp的程序”并且有这样的基本问题,我建议你下载UPnP specifications bundle并阅读文档UPnP-arch-DeviceArchitecture.它以易于理解的步骤描述了UPnP的搜索和查询阶段是如何工作的。
OP澄清后的更新:
如果设备通过具有SEARCHPORT.UPNP.ORG值的NOTIFY多播消息宣布自身,则设备的重新发现作为对从原始响应(到多播SEARCH)中已知的IP和标准端口1900或特定端口的单播请求发生。因此,如果设备需要重新发现,并且没有通知自己,则端口默认为1900。另请参阅下一页UPnP设备架构中的第32页,主机报头字段说明。
然而,请注意,这种重新发现不应该是必要的,或者很少。UPnP设备应在使用类型为ssdp:update的NOTIFY多播数据包连接到网络时通告自己,并在断开连接时键入ssdp:byebye。此外,大多数设备都有事件变量,控制点应该自动订阅这些变量,并在固定的租用时间(默认情况下为30分钟)续订。因此设备的突然消失无论如何都会被发现(通过失败的订阅续订)。
https://stackoverflow.com/questions/13570523
复制相似问题