- Взаимодействие Android-устройств в локальной сети
- О чем это и для кого это?
- Какие возможные способы решения существуют?
- Как подключить Android к локальной сети LAN Windows
- Перед подключением
- Подключение Android к Windows LAN
- Как с Windows- и Android-устройств иметь доступ к данным друг друга по локальной сети
- Подключение с Android-устройства к расшаренным файлам на компьютере
- FTP-доступ к содержимому Android-устройства на компьютере
Взаимодействие Android-устройств в локальной сети
Предположим, мы пишем игру для Android, которая подразумевает некое сетевое взаимодействие между устройствами. Причем наши устройства находятся в одной сети и мы хотим, чтобы взаимодействие между ними осуществлялось быстро, а значит вариант с обменом данными через интернет нам не подходит. Ах да, еще одна маленькая ложка дегтя — мы хотим охватить максимально возможную аудиторию, для чего нам необходимо поддерживать Android 2.3.
Что же нам делать? Давайте поговорим об этом, а заодно рассмотрим относительно новые возможности Android SDK для соединения двух и более устройств.
О чем это и для кого это?
Как-то раз, уйдя с предыдущего места работы и погрузившись в заслуженный отдых, я принялся писать сетевую игру, в которую могут играть люди, находящиеся в одной локальной сети. И сразу же столкнулся с тем, что для нормального функционирования подобной игры нам мало соорудить сетевое взаимодействие — нам нужно сделать нормальное и быстрое обнаружение устройств в сети. Собственно, в данной статье я поделюсь своим опытом в реализации решения для данной задачи.
Сразу оговорюсь, что статья предназначена в большей мере для тех, кто имеет опыт Android-разработки, написал несколько приложений и хочет расширить свой кругозор, а также улучшить профессиональные навыки.
Какие возможные способы решения существуют?
- Android Network Service Discovery. Простой и эффективный способ обнаружения устройств. На Android Developer есть пошаговое руководство по подключению NSD, есть пример NsdChat, который можно скачать там же. Но есть один существенный минус — данный метод поддерживается только начиная с API Level 16, то есть с Android 4.1 Jelly Bean;
- Второе решение, предлагаемое нам на сайте Android Developer — Wi-Fi Peer-to-Peer. Проблема этого метода та же самая — поддерживается он только начиная с API Level 16;
- Есть странное решение, которое предлагается некоторыми программистами на Stack Overflow — самостоятельно сканировать локальную сеть на предмет наличия сервера. То есть проходить по всем адресам сети. Это уже сейчас звучит как странный велосипед, а теперь представьте, что порт нашего сервера назначается автоматически. Таким образом, сканирование даже самую небольшой сети становится достаточно долгой и трудоемкой задачей;
- Наконец, мы можем обратить внимание на Java-библиотеки и написать что-нибудь с их использованием. Например, JmDNS.
Последний способ выглядит вполне адекватным и, кажется, может обеспечить нас требуемой скоростью и удобством обнаружения устройств в сети для конечного пользователя.
Я вооружился JmDNS и решил попробовать соорудить несколько классов, которые по максимуму упростят написание описанных выше приложений. Но для начала пришлось немного повырезать дубликаты .class-файлов из jar-пакета JmDNS (проблема описана здесь):
Далее я взял исходный код NsdChat с Android Developer и изменил его служебный класс, который отвечает за инициализацию сокетов и организацию сетевого взаимодействия. Также я написал wrapper для JmDNS
Здесь размещены 4 основные функции для работы Network Discovery:
- startServer для создания сервера и регистрации соответствующего сервиса в локальной сети;
- findServers для поиска серверов;
- reset для окончания работы с Network Discovery и последующего освобождения ресурсов;
- wifiLock для запроса блокировки Wi-Fi.
В завершении я написал универсальный класс ConnectionWrapper для полноценной организации обнаружения, а также обмена сообщениями в локальной сети. Таким образом, создание сервера в конечном приложении выглядит следующим образом:
А вот и mServerHandler, использующийся для приема и обработки сообщений:
Отправка сообщений еще проще:
И, наконец, метод для обнаружения и подключения к серверу:
Как видите, все очень просто. А главное, все это работает в любой версии Android для максимум двух устройств. Но сделать так, чтобы это работало для условно неограниченного числа устройств очень легко, и очевидное решение придет к вам почти сразу после детального изучения класса Connection. Пусть это будет в качестве домашнего задания.
Ах, да, весь код доступен для изучения и использования всеми желающими в моем репозитории на GitHub.. И, конечно, не исключаю то, что некоторые вещи можно сделать лучше и проще, поэтому не стесняйтесь форкать и делать pull request’ы.
Источник
Как подключить Android к локальной сети LAN Windows
В этой статье — о том, как подключить ваш телефон или планшет на Android к локальной сети Windows. Даже если у вас нет никакой локальной сети, а компьютер дома всего один (но подключен к роутеру), все равно эта статья будет полезна.
Подключившись к локальной сети, вы сможете иметь доступ к сетевым папкам Windows на вашем Android устройстве. То есть, например, для того, чтобы посмотреть фильм, необязательно его будет скидывать на телефон (его можно воспроизвести прямо из сети), также облегчается и передача файлов между компьютером и мобильным устройством.
Перед подключением
Примечание: руководство применимо в том случае, когда и ваше Android устройство и компьютер подключены к одному Wi-Fi роутеру.
Прежде всего, нужно настроить на компьютере локальную сеть (даже если компьютер только один) и предоставить доступ по сети к нужным папкам, например, с видео и музыкой. О том, как это сделать, я подробно написал в предыдущей статье: Как настроить локальную сеть LAN в Windows.
В дальнейшей инструкции я буду исходить из того, что все, описанное в указанной выше статье уже выполнено.
Подключение Android к Windows LAN
В своем примере для подключения к локальной сети с Андроид я буду использовать бесплатное приложение файловый менеджер ES Проводник (ES Explorer). На мой взгляд, это лучший файловый менеджер на Android и, помимо прочего, в нем есть все необходимое для того, чтобы получить доступ к сетевым папкам (и далеко не только это, например, вы можете подключиться ко всем популярным облачным сервисам, в том числе и с разными аккаунтами).
Скачать бесплатно файловый менеджер для Android ES Проводник вы можете из магазина приложений Google Play https://play.google.com/store/apps/details?id=com.estrongs.android.pop
После установки, запустите приложение и перейдите на вкладку подключения к сети (ваше устройство при этом должно быть подключено по Wi-Fi через тот же роутер, что и компьютер с настроенной локальной сетью), переход между вкладками легко осуществляется с помощью свайпа (жест пальцем с одной стороны экрана до другой).
Далее у вас есть два варианта действий:
- Нажать кнопку Scan, тогда произойдет автоматический поиск компьютеров в сети (если нужный компьютер найден, можете сразу прервать поиск, иначе он может продолжаться долго).
- Нажать кнопку «Создать» и указать параметры вручную. При ручном указании параметров, если вы настраивали локальную сеть по моей инструкции, имя пользователя и пароль не понадобятся, зато нужен будет внутренний адрес IP компьютера в локальной сети. Лучше всего, если вы укажете на самом компьютере статический IP в подсети роутера, в противном случае при включении и выключении компьютера, он может изменяться.
После подключения, вы сразу получите доступ ко всем сетевым папкам, к которым такой доступ разрешен и сможете выполнять с ними нужные действия, например, как уже говорилось, проигрывать видео, музыку, смотреть фотографии или что-то еще на ваше усмотрение.
Как видите, подключение Android устройств к обычной локальной сети Windows — совсем не сложная задача.
Источник
Как с Windows- и Android-устройств иметь доступ к данным друг друга по локальной сети
Как с Windows- и Android-устройств иметь доступ к данным друг друга, если оба эти устройства находятся в одной локальной сети? Есть масса инструментов из числа стороннего программного обеспечения, решающего эту задачу. Но её также в части доступа к ресурсам Windows можно решить с применением штатного функционала операционной системы. Чтобы с мобильного устройства иметь доступ к расшаренным ресурсам компьютера, нужно в среде Windows настроить для выбранных папок общий доступ в локальной сети.
Для доступа же с компьютера к данным Android-устройства можно поднять на нём FTP-доступ. Рассмотрим, как всё это настраивается и подключается.
Подключение с Android-устройства к расшаренным файлам на компьютере
Если на нашем домашнем компьютере есть медиатека из подборок хороших фильмов, клипов и музыки на наш вкус, домашних фото, всё это мы можем воспроизводить на Android-устройстве. Находясь вдали от компьютера, но, естественно, будучи в зоне действия локальной сети. Для этого нужно, чтобы и компьютер, и Android-смартфон или планшет были подключены к одной локальной сети, например, обеспечиваемой домашним роутером. Ну и, конечно же, компьютер должен быть активен – не выключен, не погружен в сон или гибернацию. Мы сможем не только копировать и воспроизводить контент с компьютера, настроим доступ к его данным так, чтобы мы могли обмениваться файлами – перемещать в расшаренные папки компьютера файлы с Android-устройства и даже удалять в этих папках ненужное.
Первым делом нам необходимо внести нужные сетевые настройки в среде Windows.
Идём в панель управления, в раздел «Сеть и Интернет».
Нам нужен центр управления сетями.
Кликаем опцию изменения доп/параметров общего доступа.
В профиле гостевой или общедоступной сети включаем сетевое обнаружение и общий доступ к файлам, как показано на скриншоте.
Далее в профиле всех сетей отключаем общий доступ с парольной защитой. И нажимаем кнопку сохранения изменений.
Следующий этап – расшаривание папок с содержимым, к которому мы хотим иметь доступ с Android-устройства, т.е. предоставление для этих папок общего доступа. Кликаем нужную папку в проводнике Windows, в контекстном меню выбираем пункт предоставления доступа, далее же указываем «Отдельные люди».
В окне настройки доступа к сети в выпадающем списке указываем «Все», жмём «Добавить», затем внизу «Поделиться».
И – «Готово».
Если нужен доступ к файлам с компьютера по сети только в части их воспроизведения, на этом всё, больше никаких настроек вносить не нужно. Но для полного доступа с правом сетевых пользователей перемещать в расшаренную папку данные и удалять в ней существующие файлы необходимо ещё кое-что настроить. Идём в свойства расшаренной папки.
Во вкладке «Безопасность» кликаем группу «Все». Жмём «Изменить».
Ставим в блоке разрешений, в графе «Полный доступ» галочку в столбце «Разрешить». Далее нажимаем «Применить» и «Ок».
Теперь всё – полный доступ на управление данными в расшаренной папке предоставлен. Если доступ понадобится ограничить, проделываем обратные настройки в свойствах папки. А если вообще надо будет прекратить её расшаривание, тогда в контекстном меню в проводнике снова запускаем опцию предоставления доступа, но теперь уже выбираем пункт «Сделать недоступным».
И жмём «Прекратить общий доступ».
Описанным выше образом расшариваем каждую нужную папку с контентом и, если необходимо, настраиваем полный доступ к ней. Что нужно сделать на Android, чтобы подключиться к компьютеру по сети и получить доступ к данным в расшаренных папках? Для этого необходимо установить на устройство файловый менеджер, поддерживающий подключение по локальной сети. Одним из таких является приложение «Файловый менеджер +», оно бесплатное, его можно скачать в Google Play .
В этом приложении жмём иконку «Удалённые службы», далее – «Добавить удалённое место», далее – «Локальная сеть». После непродолжительного сканирования сети увидим наш компьютер. Жмём его.
Вводим имя пользователя компьютера, если есть, пароль, а если его нет, оставляем соответствующее поле пустым. Ставим галочку «Анонимный». Жмём «Ок». Далее увидим все расшаренные папки компьютера.
Ну и, соответственно, сможем получить доступ к их содержимому. В дальнейшем к контенту подключённого сетевого компьютера можем получить доступ оперативно, прямо в меню приложения.
По умолчанию файловый менеджер настроен на воспроизведение отдельных типов данных – видео, музыки, изображений и текстовых файлов — собственными средствами, входящими в состав приложения проигрывателями и просмотрщиками. Они примечательны тем, что предусматривают пролистывание файлов, а для медиа – переход на соседние треки и автовоспроизведение по очереди. Но при необходимости эти средства файлового менеджера можно отключить в настройках и использовать другие, установленные на Android-устройстве.
FTP-доступ к содержимому Android-устройства на компьютере
Получить доступ с компьютера к содержимому Android-устройства можно массой различных способов – через подключение по USB -кабелю, с помощью программ для дистанционного управления, с помощью программ, реализующих доступ только к отдельным расшаренным папкам, с помощью доступа по локальной сети. Каждый из этих способов подключения нужно рассматривать в отдельных материалах. Но раз уж мы при рассмотрении подключения к расшаренным ресурсам компьютера использовали приложение «Файловый менеджер +», в этой публикации стоит упомянуть его возможность поднятия на Android-устройстве локального FTP -сервера. Такая возможность позволит нам полноценно управлять данными смартфона или планшета по типу управления файлами на обычном FTP —сервере.
В главном окне приложения «Файловый менеджер +» жмём «Доступ с ПК». В появившейся далее форме снимаем галочку «Случайный номер порта» и жмём «Пуск». Далее увидим FTP —адрес подключения к Android-устройству на компьютере. В этом же окошке подключения будет кнопка остановки работы FTP —сервера – кнопка «Остановить службу». Она, соответственно, отвечает за прекращение сетевого доступа к данным мобильного устройства.
На компьютере в адресную строку проводника вводим отображающийся в Android-приложении FTP —адрес. Получаем доступ к содержимому гаджета и можем с ним работать как с отдельным устройством информации компьютера.
С поднятым на Android-устройстве FTP —сервером, как и с обычным FTP —сервером, в части загрузки файлов также можем работать в окне браузера. Вводим адрес FTP —сервера, заходим в родительские каталоги Android-устройства.
Из родительских каталогов идём в любую папку памяти устройства и скачиваем оттуда файлы на компьютер.
Источник