【问题标题】:DLNA Discoverability problemsDLNA 可发现性问题
【发布时间】:2013-10-15 15:36:08
【问题描述】:

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

  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. 有没有办法强制/欺骗它再次给我回复?

【问题讨论】:

    标签: upnp dlna upnpx


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 感谢您的意见。我的东西现在肯定工作得更好了。另外,我正在查看 1.0 arch 文档,因此我也很欣赏指向 1.1 文档的链接。
    • 另外,我在字典中保存了一个“找到”设备列表,由 UUID 存储,因此当我的用户向触发搜索的按钮发送垃圾邮件时,这对我的响应能力有很大帮助。
    猜你喜欢
    • 2019-04-13
    • 1970-01-01
    • 2013-05-20
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多