Локальная сеть с android устройств

Взаимодействие Android-устройств в локальной сети

Предположим, мы пишем игру для Android, которая подразумевает некое сетевое взаимодействие между устройствами. Причем наши устройства находятся в одной сети и мы хотим, чтобы взаимодействие между ними осуществлялось быстро, а значит вариант с обменом данными через интернет нам не подходит. Ах да, еще одна маленькая ложка дегтя — мы хотим охватить максимально возможную аудиторию, для чего нам необходимо поддерживать Android 2.3.
Что же нам делать? Давайте поговорим об этом, а заодно рассмотрим относительно новые возможности Android SDK для соединения двух и более устройств.

О чем это и для кого это?

Как-то раз, уйдя с предыдущего места работы и погрузившись в заслуженный отдых, я принялся писать сетевую игру, в которую могут играть люди, находящиеся в одной локальной сети. И сразу же столкнулся с тем, что для нормального функционирования подобной игры нам мало соорудить сетевое взаимодействие — нам нужно сделать нормальное и быстрое обнаружение устройств в сети. Собственно, в данной статье я поделюсь своим опытом в реализации решения для данной задачи.
Сразу оговорюсь, что статья предназначена в большей мере для тех, кто имеет опыт Android-разработки, написал несколько приложений и хочет расширить свой кругозор, а также улучшить профессиональные навыки.

Какие возможные способы решения существуют?

  1. Android Network Service Discovery. Простой и эффективный способ обнаружения устройств. На Android Developer есть пошаговое руководство по подключению NSD, есть пример NsdChat, который можно скачать там же. Но есть один существенный минус — данный метод поддерживается только начиная с API Level 16, то есть с Android 4.1 Jelly Bean;
  2. Второе решение, предлагаемое нам на сайте Android Developer — Wi-Fi Peer-to-Peer. Проблема этого метода та же самая — поддерживается он только начиная с API Level 16;
  3. Есть странное решение, которое предлагается некоторыми программистами на Stack Overflow — самостоятельно сканировать локальную сеть на предмет наличия сервера. То есть проходить по всем адресам сети. Это уже сейчас звучит как странный велосипед, а теперь представьте, что порт нашего сервера назначается автоматически. Таким образом, сканирование даже самую небольшой сети становится достаточно долгой и трудоемкой задачей;
  4. Наконец, мы можем обратить внимание на Java-библиотеки и написать что-нибудь с их использованием. Например, JmDNS.

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

Я вооружился JmDNS и решил попробовать соорудить несколько классов, которые по максимуму упростят написание описанных выше приложений. Но для начала пришлось немного повырезать дубликаты .class-файлов из jar-пакета JmDNS (проблема описана здесь):

Далее я взял исходный код NsdChat с Android Developer и изменил его служебный класс, который отвечает за инициализацию сокетов и организацию сетевого взаимодействия. Также я написал wrapper для JmDNS

Здесь размещены 4 основные функции для работы Network Discovery:

  1. startServer для создания сервера и регистрации соответствующего сервиса в локальной сети;
  2. findServers для поиска серверов;
  3. reset для окончания работы с Network Discovery и последующего освобождения ресурсов;
  4. wifiLock для запроса блокировки Wi-Fi.
Читайте также:  Vpn для фаерфокс андроид

В завершении я написал универсальный класс 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 через тот же роутер, что и компьютер с настроенной локальной сетью), переход между вкладками легко осуществляется с помощью свайпа (жест пальцем с одной стороны экрана до другой).

Далее у вас есть два варианта действий:

  1. Нажать кнопку Scan, тогда произойдет автоматический поиск компьютеров в сети (если нужный компьютер найден, можете сразу прервать поиск, иначе он может продолжаться долго).
  2. Нажать кнопку «Создать» и указать параметры вручную. При ручном указании параметров, если вы настраивали локальную сеть по моей инструкции, имя пользователя и пароль не понадобятся, зато нужен будет внутренний адрес IP компьютера в локальной сети. Лучше всего, если вы укажете на самом компьютере статический IP в подсети роутера, в противном случае при включении и выключении компьютера, он может изменяться.
Читайте также:  Как изменить геолокацию андроид

После подключения, вы сразу получите доступ ко всем сетевым папкам, к которым такой доступ разрешен и сможете выполнять с ними нужные действия, например, как уже говорилось, проигрывать видео, музыку, смотреть фотографии или что-то еще на ваше усмотрение.

Как видите, подключение Android устройств к обычной локальной сети Windows — совсем не сложная задача.

Источник

Как с Windows- и Android-устройств иметь доступ к данным друг друга по локальной сети

Как с Windows- и Android-устройств иметь доступ к данным друг друга, если оба эти устройства находятся в одной локальной сети? Есть масса инструментов из числа стороннего программного обеспечения, решающего эту задачу. Но её также в части доступа к ресурсам Windows можно решить с применением штатного функционала операционной системы. Чтобы с мобильного устройства иметь доступ к расшаренным ресурсам компьютера, нужно в среде Windows настроить для выбранных папок общий доступ в локальной сети.

Для доступа же с компьютера к данным Android-устройства можно поднять на нём FTP-доступ. Рассмотрим, как всё это настраивается и подключается.

Подключение с Android-устройства к расшаренным файлам на компьютере

Если на нашем домашнем компьютере есть медиатека из подборок хороших фильмов, клипов и музыки на наш вкус, домашних фото, всё это мы можем воспроизводить на Android-устройстве. Находясь вдали от компьютера, но, естественно, будучи в зоне действия локальной сети. Для этого нужно, чтобы и компьютер, и Android-смартфон или планшет были подключены к одной локальной сети, например, обеспечиваемой домашним роутером. Ну и, конечно же, компьютер должен быть активен – не выключен, не погружен в сон или гибернацию. Мы сможем не только копировать и воспроизводить контент с компьютера, настроим доступ к его данным так, чтобы мы могли обмениваться файлами – перемещать в расшаренные папки компьютера файлы с Android-устройства и даже удалять в этих папках ненужное.

Первым делом нам необходимо внести нужные сетевые настройки в среде Windows.

Идём в панель управления, в раздел «Сеть и Интернет».

Нам нужен центр управления сетями.

Кликаем опцию изменения доп/параметров общего доступа.

В профиле гостевой или общедоступной сети включаем сетевое обнаружение и общий доступ к файлам, как показано на скриншоте.

Далее в профиле всех сетей отключаем общий доступ с парольной защитой. И нажимаем кнопку сохранения изменений.

Следующий этап – расшаривание папок с содержимым, к которому мы хотим иметь доступ с Android-устройства, т.е. предоставление для этих папок общего доступа. Кликаем нужную папку в проводнике Windows, в контекстном меню выбираем пункт предоставления доступа, далее же указываем «Отдельные люди».

В окне настройки доступа к сети в выпадающем списке указываем «Все», жмём «Добавить», затем внизу «Поделиться».

И – «Готово».

Если нужен доступ к файлам с компьютера по сети только в части их воспроизведения, на этом всё, больше никаких настроек вносить не нужно. Но для полного доступа с правом сетевых пользователей перемещать в расшаренную папку данные и удалять в ней существующие файлы необходимо ещё кое-что настроить. Идём в свойства расшаренной папки.

Во вкладке «Безопасность» кликаем группу «Все». Жмём «Изменить».

Ставим в блоке разрешений, в графе «Полный доступ» галочку в столбце «Разрешить». Далее нажимаем «Применить» и «Ок».

Читайте также:  Start custom activity android

Теперь всё – полный доступ на управление данными в расшаренной папке предоставлен. Если доступ понадобится ограничить, проделываем обратные настройки в свойствах папки. А если вообще надо будет прекратить её расшаривание, тогда в контекстном меню в проводнике снова запускаем опцию предоставления доступа, но теперь уже выбираем пункт «Сделать недоступным».

И жмём «Прекратить общий доступ».

Описанным выше образом расшариваем каждую нужную папку с контентом и, если необходимо, настраиваем полный доступ к ней. Что нужно сделать на Android, чтобы подключиться к компьютеру по сети и получить доступ к данным в расшаренных папках? Для этого необходимо установить на устройство файловый менеджер, поддерживающий подключение по локальной сети. Одним из таких является приложение «Файловый менеджер +», оно бесплатное, его можно скачать в Google Play .

В этом приложении жмём иконку «Удалённые службы», далее – «Добавить удалённое место», далее – «Локальная сеть». После непродолжительного сканирования сети увидим наш компьютер. Жмём его.

Вводим имя пользователя компьютера, если есть, пароль, а если его нет, оставляем соответствующее поле пустым. Ставим галочку «Анонимный». Жмём «Ок». Далее увидим все расшаренные папки компьютера.

Ну и, соответственно, сможем получить доступ к их содержимому. В дальнейшем к контенту подключённого сетевого компьютера можем получить доступ оперативно, прямо в меню приложения.

По умолчанию файловый менеджер настроен на воспроизведение отдельных типов данных – видео, музыки, изображений и текстовых файлов — собственными средствами, входящими в состав приложения проигрывателями и просмотрщиками. Они примечательны тем, что предусматривают пролистывание файлов, а для медиа – переход на соседние треки и автовоспроизведение по очереди. Но при необходимости эти средства файлового менеджера можно отключить в настройках и использовать другие, установленные на Android-устройстве.

FTP-доступ к содержимому Android-устройства на компьютере

Получить доступ с компьютера к содержимому Android-устройства можно массой различных способов – через подключение по USB -кабелю, с помощью программ для дистанционного управления, с помощью программ, реализующих доступ только к отдельным расшаренным папкам, с помощью доступа по локальной сети. Каждый из этих способов подключения нужно рассматривать в отдельных материалах. Но раз уж мы при рассмотрении подключения к расшаренным ресурсам компьютера использовали приложение «Файловый менеджер +», в этой публикации стоит упомянуть его возможность поднятия на Android-устройстве локального FTP -сервера. Такая возможность позволит нам полноценно управлять данными смартфона или планшета по типу управления файлами на обычном FTP —сервере.

В главном окне приложения «Файловый менеджер +» жмём «Доступ с ПК». В появившейся далее форме снимаем галочку «Случайный номер порта» и жмём «Пуск». Далее увидим FTP —адрес подключения к Android-устройству на компьютере. В этом же окошке подключения будет кнопка остановки работы FTP —сервера – кнопка «Остановить службу». Она, соответственно, отвечает за прекращение сетевого доступа к данным мобильного устройства.

На компьютере в адресную строку проводника вводим отображающийся в Android-приложении FTP —адрес. Получаем доступ к содержимому гаджета и можем с ним работать как с отдельным устройством информации компьютера.

С поднятым на Android-устройстве FTP —сервером, как и с обычным FTP —сервером, в части загрузки файлов также можем работать в окне браузера. Вводим адрес FTP —сервера, заходим в родительские каталоги Android-устройства.

Из родительских каталогов идём в любую папку памяти устройства и скачиваем оттуда файлы на компьютер.

Источник

Оцените статью