2013-10-15 38 views
0

我广播发现消息是这样的:DLNA发现性问题

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. 有没有办法解决强制/欺骗它第二次给我一个回应?

回答

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秒以及一秒或两秒的回复。

+0

感谢您的输入。我的东西现在肯定工作得更好。另外,我正在考虑1.0 arch文档,所以我也很欣赏链接到1.1文档。 – HalR

+0

另外,我在UUID存储的词典中保留了一个“找到的”设备列表,这样当我的用户发送触发搜索的按钮时,我的响应能力就会大大提高。 – HalR