DLNA可发现性问题

时间:2013-10-15 15:36:08

标签: upnp dlna upnpx

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

  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. 有没有办法可以强迫/欺骗它再给我一个回复?

1 个答案:

答案 0 :(得分:3)

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

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

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

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

上述所有内容的来源是UPNP arch document,或者更确切地说是我的记忆。我几乎100%确定DLNA对这些东西有额外的要求,但我不记得那些不可思议的......这些可能的额外要求可能不应该让设备不响应​​你。

编辑:哦,哎呀,我打开了DLNA规范,为什么不呢:你应该发送超过1个M-SEARCH。每200 ms周期不应超过10 M-SEARCH。原始和重复应在10秒内发送。对于任何网络延迟,您应等待MX秒以及一两秒钟的回复。