Кто-нибудь заставил 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.
Так ... я что-то упустил? Это все еще ошибка? Получил ли кто-нибудь хоть что-то подобное на работу ???