我希望有人可以清除我在upnp/ssdp协议使用的NOTIFY和M-SEARCH消息背后的混淆。
我的理解是当设备想要将自己通告给其他支持UPNP的设备时发送NOTIFY消息,并且当设备想要了解其他支持UPNP的设备时发送M-SEARCH消息。
那么,如果我的设备通过广播地址(对于SSDP,239.255.255.250)从其他设备收到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
SERVER: OS/version UPnP/1.0 product/version
ST: search target
USN: advertisement UUID
这是我的问题。为什么NOTIFY消息首先存在?由于您在看到M-SEARCH时将设备信息发送回所请求的设备,因此在我看来,除非有人要求,否则无需事先通知NOTIFY设备信息,因为听广告的其他设备可能或可能在发送NOTIFY时无法使用。
换句话说,我想知道NOTIFY与M-SEARCH相比的确切目的,最好是使用它的实际例子。
或者我只是完全误解了这个协议?
答案 0 :(得分:13)
示例:
如果没有NOTIFY控制点,如果想要注意新设备的出现,则必须不断轮询。离开网络的设备也是如此(尽管有时设备会意外离开,因此您无法信任要发送的再见者)。