0

我正在广播这样的发现消息:

  M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nMAN: \"ssdp:discover\"\r\nMX: 10\r\nST: ssdp:all\r\n

我通常会从我的 DLNA 设备中得到响应。但有时我不会。

更大的问题是,如果我收到了一次响应,并且我再次广播了一条发现消息,那么我第二次或以后都没有收到来自我的设备的响应。

我阅读文档的方式是要求设备响应这些广播消息。

我有两个问题:

  1. 设备响应发现消息的频率是否有限制?

  2. 有没有办法强制/欺骗它再次给我回复?

4

1 回答 1

3

我在 M-SEARCH 中看到的几个可能的问题(或者在任何情况下都不是 100% 合规性):

  • 最后应该有一个空行
  • MX 最大值为 5

关于未收到回复:丢失消息当然可能有原因(错误),但请注意,您绝对不能信任消息传递,因为这是 UDP 而不是 TCP。这就是为什么即使根据规范,每个 M-SEARCH 也应该发送多次。

如果我没记错的话,UPnP 规范模糊地建议“数百毫秒”作为发现消息的最小重复频率。

以上所有内容的来源是UPNP arch 文档,或者更确切地说是我对它的记忆。我几乎 100% 确定 DLNA 对这些东西有额外的要求,但我不记得那些在我脑海中浮现的东西……这些可能的额外要求可能不应该让设备对你没有响应。

编辑:哎呀,我打开了 DLNA 规范,所以为什么不:你应该发送超过 1 个 M-SEARCH。每 200 ms 周期不应超过 10 个 M-SEARCHes。原件和副本应在 10 秒内发送。您应该等待MX几秒钟的回复,再加上一两秒钟的网络延迟。

于 2013-10-15T16:08:31.557 回答