Многоадресная рассылка на 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.

Итак... я что-то упустил? Это все еще ошибка? Получил ли кто-нибудь хоть что-то подобное на работу???

3 ответа

Решение

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

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

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

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

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

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

  • HTC Desire, 2.2, сток: сбой
  • HTC Desire, 2.3.7, CyanogenMod: успех
  • Motorola Milestone, 2.1-обновление1: сбой
  • HTC Desire S, 2.3.3: сбой
  • Acer Iconia A501, 3.2.1: успех
  • Самсунг-то, 2.3.3: сбой
  • HTC Legend, 2.2 думаю: сбой

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

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

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

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

ваш компьютер должен использовать только WIFI, лучше всего использовать другие сети

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