Подтвердить что ты не робот

Многоадресная рассылка на Android 2.2

Кто-нибудь получил Multicast для работы на Android 2.2, в частности, JmDNS для обнаружения службы Bonjour. Существует много вопросов и ответов с таймфрейма Android 1.5- > 2.0, в том числе на stackOverflow, которые указывают на различные уровни успеха, а также ошибку в трекере ошибок, которые указывают, что он был исправлен и закрыт для 2.2 (http://code.google.com/p/android/issues/detail?id=2323). Я пробовал исходный код "TuneControl", но это работало на ~ 1.5 и не обновлялось и не работает для меня в версии 2.2.

Итак, вопросы... 1) Кто-нибудь видел многоадресную рассылку на 2.2, особенно JmDNS, и специально для обнаружения службы Bonjour?

2) Что необходимо в коде, чтобы сделать эту работу?

Я использую соответствующие разрешения:

<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

Я получаю блокировку многоадресной рассылки:

WifiManager wifi = (WifiManager)getSystemService( Context.WIFI_SERVICE );
if(wifi != null)
{
    MulticastLock mcLock = wifi.createMulticastLock("mylock");
    mcLock.acquire();
...

И затем попытайтесь запустить jmDNS для поиска серверов:

    mdns = JmDNS.create(addr, HOSTNAME);
    jmdns.addServiceListener(TOUCH_ABLE_TYPE, listener);
    jmdns.addServiceListener(DACP_TYPE, listener);
    ...

Слушатель никогда не видит никаких сервисов. Я проверил использование Wireshark, что пакеты запросов отправлены, и что сервер отвечает, но пакет ответа никогда не просматривается кодом прослушивателя сокета в библиотеке jmDNS.

Итак... я что-то упустил? Это еще ошибка? ЛЮБОЙ получил что-то даже отдаленно, как это, чтобы работать???

4b9b3361

Ответ 1

Чтобы (грубо) ответить на мой собственный вопрос, дополнительная информация была предоставлена ​​в http://code.google.com/p/android/issues/detail?id=2917#c48 другим лицом. Для потомков, как говорится, вот brian.ro... @gmail.com ответ...

"Я потратил немало времени отладка проблем mDNS с помощью JmDNS на моем Evo и HTC Hero (CDMA). Что я нашел есть, по-видимому, фильтр в место в беспроводном драйвере Broadcom на Evo (и поскольку я получаю аналогичный отзыв от пользователя HTC Desire - с тем же набором микросхем, предположительно и с этим телефоном). Фильтр по по умолчанию блокирует любую не-одноадресную рассылку или сетевой широковещательный трафик, включая многоадресной рассылки. По-видимому, теория была это аккумуляторная батарея.

Проблема заключается в том, что wpa_supplicant на Evo не делает поддержка удаления этих фильтров, когда вы получаете MulticastLock. (Проверить выход журнала сразу после получения замок, и вы поймете, что я имею в виду). К сожалению, произошло то, что поставщики оборудования раздроблены поддержка многоадресной передачи....:("

Итак... похоже, это проблема устройства, а не проблема с кодированием. D'о.:( Если я получаю возможность протестировать другое устройство...

Ответ 2

Я делал немного исследований в этом, и я считаю, что это проблема с Android в целом и исправлена ​​в Android 2.3.7 или вокруг нее.

Это немного анекдотично, но вот что я тестировал:

  • HTC Desire, 2.2, наличие: fail
  • HTC Desire, 2.3.7, CyanogenMod: успех
  • Motorola Milestone, 2.1-update1: fail
  • HTC Desire S, 2.3.3: fail
  • Acer Iconia A501, 3.2.1: успех
  • Samsung что-то, 2.3.3: fail
  • HTC Legend, 2.2 Я думаю: не удалось

Когда я говорю "fail", на самом деле все они могли отправлять многоадресные сообщения на "успешные" устройства, но никогда не получают ничего, кроме своих собственных сообщений, как описывает jldupont.

Обратите внимание, что приложение многоадресной рассылки Kouchat доступно только для 2.3.7, даже если оно может быть выполнено для компиляции в качестве еще в 2.1, что дает дополнительное подтверждение этой теории.

Ответ 3

Я думаю, что другая причина заключается в том, что ваша AP не поддерживает.

Другое: компьютер отправляет/получает на/из Android

ваш компьютер должен использовать только WIFI, Best off all other network