Проблемы с обнаружением 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. Есть ли способ обойти это, чтобы заставить / обмануть меня, чтобы дать мне ответ во второй раз?

1 ответ

Решение

Пара возможных проблем, которые я вижу с M-SEARCH (или нет 100% соответствия в любом случае):

  • должен иметь пустую строку в конце
  • Максимальное значение MX 5

О неполучении ответов: Конечно, может быть причина (ошибка) для пропущенных сообщений, но учтите, что вы абсолютно не можете доверять доставке сообщений, поскольку это UDP, а не TCP. Вот почему даже в соответствии со спецификацией каждый M-SEARCH должен отправляться несколько раз.

Если я правильно помню, спецификация UPnP смутно предлагает "сотни миллисекунд" в качестве минимальной частоты повторения для сообщений обнаружения.

Источником всего вышеперечисленного является архивный документ UPNP, точнее, моя память об этом. Я почти на 100% уверен, что у DLNA есть дополнительные требования к этим вещам, но я не могу вспомнить, чтобы они были у меня в голове... Эти возможные дополнительные требования, вероятно, не должны заставлять устройства не отвечать вам.

РЕДАКТИРОВАТЬ: О черт, у меня была открытая спецификация DLNA, так почему бы и нет: Вы должны отправить более 1 M-SEARCH. Не должно превышать 10 М-ПОИСКОВ за любой период 200 мс. Оригинал и дубликаты должны быть отправлены в течение 10 секунд. Вам следует дождаться ответов на MX секунды плюс секунда или две для любых сетевых задержек.

Другие вопросы по тегам