为什么SSDP需要NOTIFY?

l46*_*kok 4 networking network-programming network-protocols upnp ssdp

我希望有人可以解决我在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
Run Code Online (Sandbox Code Playgroud)

这是我的问题.为什么NOTIFY消息首先存在?由于您在看到M-SEARCH时将设备信息发送回所请求的设备,因此在我看来,除非有人要求,否则无需提前通知设备信息,因为其他听取广告的设备可能是在NOTIFY发送时可能无法使用.

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

或者我只是完全误解了这个协议?

Jus*_*nen 13

例:

  1. 控制点加入网络
  2. 控制点发送M-SEARCH,没有回复.
  3. 媒体渲染器加入网络
  4. 媒体渲染器发送NOTIFY
  5. 控制点通知NOTIFY,更新UI以显示新的渲染器

没有NOTIFY控制点,如果想要注意出现的新设备,则必须不断轮询.离开网络的设备也是如此(尽管有时设备会意外离开,因此您无法信任要发送的再见者).

  • +1.此外,定期NOTIFY允许控制点推断设备已离开网络,即使该设备无法发送BYEBYE (2认同)