есть один важный момент, с которыми пришлось столкнуться.
jmdns использует мультикаст, но не все андроид устройства его поддерживают.
Пытались также использовать WiFi-direct, но он нормально так и не заработал у нас. Обнаружение устройств работало отлично. А вот если происходило несколько коннектов/дисконнектов то устройства в итоге переставали подключаться друг другу. В итоге перешли на использование jmdns
Нет ли у Вас какой-либо информации о поддержке/неподдержке мультикаста на различных девайсах?
Ну, или хотя бы предполагаемый процент покрытия зоопарка девайсов при использовании мультикаста?
Лично меня на данным момент интересует вопрос определения ip-адреса http-сервера в локальной сетке и посему информация о JmDNS весьма кстати.
Я тестировал этот код на старых устройствах с Android 2.3 и везде все было нормально с Multicast DNS. Так что теоретически такой способ вполне неплохо подходит на роль универсального для определения IP-адреса сервера в локальной сети. Вероятно, есть некий процент устройств, на котором это не будет работать, но я думаю, что этот процент весьма небольшой. Да и все устройства, на которых это не будет работать, весьма старые.
Заказчики они такие заказчики :) У меня пару лет назад требовали поддержку АПИ 3.
Я все таки говорю про реальный рынок. Там не сухие проценты, эти проценты имеют еще и качество (кто на Android 2.3 и кто на API 18)
Это оправдано, если есть возможность самостоятельно принимать решения о поддержке разных версий. Хотя и на 2.3.3 до сих пор довольно много активных пользователей (судя по статистике для моих приложений из google play).
Безусловно больше всегда лучше.
Но время берет свое, приложение планируем сегодня, делаем завтра, запускаем послезавтра. А тех пользователей все меньше и меньше. Кроме того, есть деликатный вопрос ценности пользователей. Обладатель свежего аппарата куда «денежнее», чем владелец галакси эйс 2011 года. И всегда есть предел допустимой переплаты за решение для всех.
Почему нельзя послать широковещательное сообщение на всю локальную сеть внутри Wi-Fi на которое ответят все устройства, поддерживающий нужный нам сервис?
Спасибо за статью. Ещё хотелось почитать про реальный опыт разработки игр с поддержкой локальной сети — насколько я представляю, там должно быть достаточно много проблем со скоростью работы (если говорить об экшн играх).
Опыта разработки именно экшн-игр у меня, увы, нет.
Вероятно, проблемы будут. Но все эти проблемы в общем-то вполне решаемы — вы же можете играть в какой-нибудь Call of Duty даже по интернету и не испытывать особых проблем.
Я имею ввиду, что при «классической» схеме мультиплеера по локальной сети — когда на одном устройстве запускается сервер и клиент, а на остальных — только клиенты, «серверу», возможно, будет не хватать производительности обрабатывать модель мира и все взаимодействия с клиентами. Ну это так, эвристика)
Взаимодействие Android-устройств в локальной сети