Как я могу обнаружить zeroconf (Добрый день) сервисы на Android? Я испытываю затруднения из-за jmDNS

Я работаю с Droid / Android 2.0.1 и встречаюсь с проблемой, по-видимому, многие люди имеют: я не могу обнаружить сервисы с помощью одного чистого Java zeroconf библиотека, которую я знаю, jmDNS. (Apple Добрый день, в то время как это работает над Linux и Windows Java, я верю, было бы более твердым к порту к Android из-за уверенности в собственном коде.)

Я могу создать сервисы, но не обнаружить их. Я пытаюсь понять то, что продолжается.

Здесь существует отчет о текущей проблеме; связанный с многоадресной передачей и IPv6, но, кажется, бросает пользователей jmDNS, также: http://code.google.com/p/android/issues/detail?id=2323

Какая-либо идея, почему этот человек мог бы иметь успех? См. комментарий 22 в отчете об ошибках. (Я плохо знаком для Так, так не может отправить больше чем один URL.)

Я протестировал их код, но без любой удачи.

Кто-либо успешно выполнил zeroconf сервисное исследование на Android, с помощью jmDNS или другой библиотеке?

Действительно ли возможно, что моя проблема исследования связана с многоадресной проблемой IPv6?

38
задан Roman Nurik 19 March 2010 в 01:30
поделиться

2 ответа

Я тоже новичок, иначе я бы просто оставил комментарий к ответу smountcastle, который в основном правильный. Я только что столкнулся с той же проблемой на Droid под управлением Android 2.1. Я обнаружил, что мне нужно настроить MulticastLock на подсчет ссылок, иначе казалось, что он будет выпущен автоматически.

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

// Networking code:
WifiManager wifi = getSystemService( Context.WIFI_SERVICE );
MulticastLock lock = wifi.createMulticastLock("fliing_lock");
lock.setReferenceCounted(true);
lock.acquire();

Просто не забудьте вызвать lock.release () , когда закончите с этим. Это может быть необходимо только для Android 2.0+. На данный момент Droid - мое единственное тестовое устройство, поэтому я не могу сказать наверняка.

12
ответ дан 27 November 2019 в 03:54
поделиться

Вы явно установили блокировку многоадресной рассылки, чтобы получать пакеты многоадресной рассылки?

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

// Networking code:
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
MulticastLock lock = wifi.createMulticastLock("mylock");
lock.acquire();

Согласно этой ветке Android Issue, похоже, что 2.0.1 не работает. нет исправления. Может, вам стоит перейти на более позднюю версию?

3
ответ дан 27 November 2019 в 03:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: