为什么在SSDP中需要NOTIFY ?



我希望有人能澄清我对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时,其他收听广告的设备可能可用,也可能不可用。

换句话说,我想知道与M-SEARCH相比,NOTIFY的确切目的,最好是使用它的实际示例。

还是我完全误解了这个协议?

示例:

  1. 控制点加入网络
  2. 控制点发送M-SEARCH,未得到应答。
  3. 媒体渲染器加入网络
  4. 媒体渲染器发送通知
  5. 控制点通知NOTIFY,更新UI以显示新的渲染器

如果没有NOTIFY控制点,如果它想在新设备出现时注意到它们,则必须不断轮询。离开网络的设备也是如此(尽管有时设备会意外离开,因此您无法信任发送的告别)。

相关内容

  • 没有找到相关文章

最新更新