我希望有人能澄清我对upnp/ssdp协议使用的 NOTIFY 和 M-SEARCH 消息的目的背后的困惑。
我的理解是,当设备想要向其他支持 UPNP 的设备宣传自己时会发送 NOTIFY 消息,而当设备想要了解其他支持 UPNP 的设备时会发送 M-SEARCH 消息。
那么,如果我的设备通过广播地址 (for 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 相比的确切目的,最好是使用它的实际示例。
还是我完全误解了这个协议?