26 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Использование сокетов в Android

Использование сокетов в Android

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

Сокет (socket) — это интерфейс, позволяющий связывать между собой программы различных устройств, находящихся в одной сети. Сокеты бывают двух типов: клиентский (Socket) и серверный (ServerSocket). Главное различие между ними связано с тем, что сервер «открывает» определенный порт на устройстве, «слушает» его и обрабатывает поступающие запросы, а клиент должен подключиться к этому серверу, зная его IP-адрес и порт. В Android сокеты для передачи данных используют по умолчанию протокол TCP/IP, важной особенностью которого является гарантированная доставка пакетов с данными от одного устройства до другого.

Особенности использования сокетов

Что важно знать при использовании сокетов в Android ?

  • соединения сокетов отключаются при переходе устройства в спящий режим;
  • чтобы не «рвать» соединение при наступлении спящего режима в устройстве можно использовать сервис;
  • для использования интернет-сети необходимо Android-приложению предоставить нужные права в манифесте.

Для определения прав в манифесте необходимо в файл AndroidManifest.xml добавить следующую строку :

Теперь android-приложения будет иметь доступ к сети.

Далее в статье рассмотрим пример клиент-серверного сокетного соединения с передачей сообщения. Функции клиента будет выполнять android-приложение. Серверное java-приложение выполним в IDE Eclipse с использованием пакета concurrent. В конце страницы можно скачать оба приложения.

Какие порты использует Whatsapp

Камеры подключаем к роутеру по схедующей схеме (рис. 0):

Существуют камеры двух видов: одни работают по протоколу rstp, другие берут картинку через http. Поддерживает ли ваша камера rtsp можно узнать из сопроводительной документации.

Для работы камер с rstp на роутере нужно настроить проброс портов (port forwarding — так обычно называется эта настройка в меню роутеров) для протокола rtsp (порт 554, протокол UDP).

Для работы камер через http на роутере нужно настроить проброс портов для протокола http (порт 80 и 8080, протокол tcp)

ПРИМЕР для схемына рис. 0 нужно для камеры 1 сделать проброс порта UDP 554 на порт 554 до ip 192.168.1.2 и для камеры 2 проброс порта 555 на порт 554 до ip 192.168.1.3

Пример проброса портов для роутера Netgear JNR1010 (кликните по картинке для ее увеличения):

Настройки на камерах:

Для большинства камер может потребоваться на самой камере создать пользователя с правами на просмотр или вещание. Если подобное не предусмотрено производителем, то используется логин и пароль для доступа на web-интерфейс камеры. Связку логина и пароля нужно ввести при подключении камеры к серверу видеонаблюдения в разделе «настройки подключения канала».

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

Остальные настройки очень индивидуальны для разных камер. Ниже сводная таблица рекомендуемых настроек камер для каждого тарифа:

Кодек (Video Encoder)

Максимальное рекомендуемое разрешение

** не путать с MJPEG.

Подключение камер к серверу видеонаблюдения

Для доступа к интерфейсу просмотра камер нужно открыть в браузере адрес http://video.mark.ru:8080

Для доступа к интерфейсу настройки и управления камерами нужно открыть в браузере адрес http://video.mark.ru:5555

В открывшемся окне авторизации ввести свой логин от услуги. Он имеет вид xxxx@yyyy и пароль

Откроется окно с списком доступных камер.

Для настройки камеры нужно выбрать ее из списка и нажать на кнопку Редактировать (она обведена на рисунке выше).

В разделе «настройки подключения канала» нужно задать IP адрес камеры, выбрать производителя и модель, соответствующую модели Вашей камеры. Если такого производителя или модели в списке нет, то можно попробовать подобрать те настройки которые подойдут Вашей камере.

Далее необходимо нажать на кнопку «Задать сетевые порты» и проверить/скорректировать порты которые пробрасывались на роутере. Если пробрасывался не стандартный rtsp порт номер 554 или 80 в случае http (или подключается вторая и последующие камеры через один роутер), то нужно в открывшемся окне снять галочку с System.Windows.Data.Binding и в самое правое поле записать номер, соответствующий номеру пробрасываемого на роутере порта для подключаемой камеры:

Читать еще:  Обзор браузера Mozilla Firefox

ПРИМЕР В схеме с рис0 (которая находится в самом начале инструкции) для камеры1 остается стандартный rtsp порт 554, для камеры2 rtsp порт меняется на 555.

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

В общем виде настройки должны выглядеть вот так:

Если настройки камеры были выставлены корректно, в окне настройки должна появиться картинка с камеры (изображение может появиться с задержкой до 60 секунд). Для ускорения процесса рекомендуем воспользоваться интерфейсом просмотра на video.mark.ru.

Для cохранения изменений нужно нажать кнопку «сохранить»

Дополнительные настройки.

В «настройках потока данных» нужно выбрать Формат видео H264, разрешение видео установить рекомендованным для выбранного Вами тарифного плана на камеру.

Для Сохранения изменений нужно нажать кнопку «сохранить».

Протокол Off-the-Record Messaging (OTR)

Off-the-Record Messaging (OTR) — криптографический протокол для систем мгновенного обмена сообщениями. Ключевыми особенностями OTR являются:

  • Шифрование. Все сообщения зашифрованы. Содержимое ваших сообщений не видно серверам.
  • Отсутствие идентификации. Отправленные вами сообщения не имеют цифровой подписи.
  • Аутентификация. Вы можете быть уверены в личности вашего собеседника.
  • Совершенная прямая секретность (Perfect forward secrecy, PFS). Если контроль над ключами утерян, предыдущие беседы не будут скомпрометированы.

Напрямую ущерба не принесет, но может забить ваш канал, поднять нагрузку на систему, ваш IP попадет в какой-нибудь black-list*****, а вам прилетит абуза от хостера.

Неужели вам нужны все эти риски? Добавьте ваш домашний и рабочий IP в white-list. Даже если он динамический — залогиньтесь через админку хостера, через веб-консоль, и просто добавьте еще один.

Я 15 лет занимаюсь построением и защитой IT-инфраструктуры. Выработал правило, которое всем настоятельно рекомендую — ни один порт не должен торчать в мир без white-list’a.

Например, наиболее защищенный web-сервер*** — это тот, у которого открыты 80 и 443 только для CDN/WAF. А сервисные порты (ssh, netdata, bacula, phpmyadmin) должны быть как минимум за white-list’ом, а еще лучше за VPN. Иначе вы рискуете быть скомпрометированным.

У меня все. Держите свои порты закрытыми!

  • (1) UPD1: Здесь можно проверить свой крутой универсальный пароль (не делайте этого не заменив этот пароль на рандомные во всех сервисах), не засветился ли он в слитой базе. А тут можно посмотреть сколько сервисов было взломано, где фигурировал ваш email, и, соответственно, выяснить, не скомпрометирован ли ваш крутой универсальный пароль.
  • (2) К чести Amazon — на LightSail минимум сканов. Видимо, как-то фильтруют.
  • (3) Еще более защищенный web-сервер это тот, что за выделенным firewall’ом, своим WAF, но речь о публичных VPS/Dedicated.
  • (4) Segmentsmak.
  • (5) Firehol.

Какие порты использует Whatsapp

Камеры подключаем к роутеру по схедующей схеме (рис. 0):

Существуют камеры двух видов: одни работают по протоколу rstp, другие берут картинку через http. Поддерживает ли ваша камера rtsp можно узнать из сопроводительной документации.

Для работы камер с rstp на роутере нужно настроить проброс портов (port forwarding — так обычно называется эта настройка в меню роутеров) для протокола rtsp (порт 554, протокол UDP).

Для работы камер через http на роутере нужно настроить проброс портов для протокола http (порт 80 и 8080, протокол tcp)

ПРИМЕР для схемына рис. 0 нужно для камеры 1 сделать проброс порта UDP 554 на порт 554 до ip 192.168.1.2 и для камеры 2 проброс порта 555 на порт 554 до ip 192.168.1.3

Пример проброса портов для роутера Netgear JNR1010 (кликните по картинке для ее увеличения):

Настройки на камерах:

Для большинства камер может потребоваться на самой камере создать пользователя с правами на просмотр или вещание. Если подобное не предусмотрено производителем, то используется логин и пароль для доступа на web-интерфейс камеры. Связку логина и пароля нужно ввести при подключении камеры к серверу видеонаблюдения в разделе «настройки подключения канала».

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

Остальные настройки очень индивидуальны для разных камер. Ниже сводная таблица рекомендуемых настроек камер для каждого тарифа:

Кодек (Video Encoder)

Максимальное рекомендуемое разрешение

** не путать с MJPEG.

Подключение камер к серверу видеонаблюдения

Для доступа к интерфейсу просмотра камер нужно открыть в браузере адрес http://video.mark.ru:8080

Для доступа к интерфейсу настройки и управления камерами нужно открыть в браузере адрес http://video.mark.ru:5555

Читать еще:  Настройка роутеров: статьи сайта

В открывшемся окне авторизации ввести свой логин от услуги. Он имеет вид xxxx@yyyy и пароль

Откроется окно с списком доступных камер.

Для настройки камеры нужно выбрать ее из списка и нажать на кнопку Редактировать (она обведена на рисунке выше).

В разделе «настройки подключения канала» нужно задать IP адрес камеры, выбрать производителя и модель, соответствующую модели Вашей камеры. Если такого производителя или модели в списке нет, то можно попробовать подобрать те настройки которые подойдут Вашей камере.

Далее необходимо нажать на кнопку «Задать сетевые порты» и проверить/скорректировать порты которые пробрасывались на роутере. Если пробрасывался не стандартный rtsp порт номер 554 или 80 в случае http (или подключается вторая и последующие камеры через один роутер), то нужно в открывшемся окне снять галочку с System.Windows.Data.Binding и в самое правое поле записать номер, соответствующий номеру пробрасываемого на роутере порта для подключаемой камеры:

ПРИМЕР В схеме с рис0 (которая находится в самом начале инструкции) для камеры1 остается стандартный rtsp порт 554, для камеры2 rtsp порт меняется на 555.

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

В общем виде настройки должны выглядеть вот так:

Если настройки камеры были выставлены корректно, в окне настройки должна появиться картинка с камеры (изображение может появиться с задержкой до 60 секунд). Для ускорения процесса рекомендуем воспользоваться интерфейсом просмотра на video.mark.ru.

Для cохранения изменений нужно нажать кнопку «сохранить»

Дополнительные настройки.

В «настройках потока данных» нужно выбрать Формат видео H264, разрешение видео установить рекомендованным для выбранного Вами тарифного плана на камеру.

Для Сохранения изменений нужно нажать кнопку «сохранить».

Приложение Signal

Signal — это приложение с открытым исходным кодом, разработанное Open Whisper и доступное для Android и iOS. Signal использует ZRTP, чтобы пользователи могли совершать безопасные звонки. У этой программы есть интересный способ подтверждения подлинности контакта, с которым вы ведете диалог: вы открываете настройки, затем кликаете на «Проверить номер безопасности» (Verify safety number). Номер безопасности представляет собой 60-значный номер, который вы можете сравнить с одним из ваших контактов, чтобы убедиться, что ваш разговор является конфиденциальным. Предусмотрена также десктоп-версия приложения Signal.

Клиентский android-сокет

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

Клиентское приложение создадим из двух классов : класс взаимодействия с серверным сокетом Connection и класс стандартной активности MainActivity.

Класс Connection

Класс взаимодействия с сервером Connection получает при создании (через конструктор) параметры подключения : host и port. Методы Connection вызываются из активности и выполняют следующие функции :

МетодОписание
openConnectionМетод открытия сокета/соединения. Если сокет открыт, то он сначала закрывается.
closeConnectionМетод закрытия сокета
sendDataМетод отправки сообщения из активности.
finalizeМетод освобождения ресурсов

Листинг Connection

Класс активности MainActivity

В активности MainActivity определены параметры сервера : host, port. Помните, что IP-адрес сервера для Вашего android-примера не может быть localhost (127.0.0.1), иначе Вы будете пытаться связаться с сервером внутри Andriod-системы. Кнопки интерфейса связаны с методами обращения к классу Connection. Кнопки отправки сообщения mBtnSend и закрытия соединения mBtnClose с сервером блокируются при старте приложения. После установления соединения с сервером доступ к кнопкам открывается.

Листинг активности

Методы управления сокетным соединением

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

Ошибка конфигурации

Наиболее типичная и опасная ситуация. Как это бывает. Разработчику надо быстро проверить гипотезу, он поднимает временный сервер с mysql/redis/mongodb/elastic. Пароль, конечно, сложный, он везде его использует. Открывает сервис в мир — ему удобно со своего ПК гуём коннектиться без этих ваших VPN. А синтаксис iptables вспоминать лень, все равно сервер временный. Еще пару дней разработки — получилось отлично, можно показывать заказчику. Заказчику нравится, переделывать некогда, запускаем в ПРОД!

Пример намеренно утрированный с целью пройтись по всем граблям:

  1. Ничего нет более постоянного, чем временное — не люблю эту фразу, но по субъективным ощущениям, 20-40% таких временных серверов остаются надолго.
  2. Сложный универсальный пароль, который используется во многих сервисах — зло. Потому что, один из сервисов, где использовался этот пароль, мог быть взломан. Так или иначе базы взломанных сервисов стекаются в одну, которая используется для [брутфорса]*.
    Стоит добавить, что redis, mongodb и elastic после установки вообще доступны без аутентификации, и часто пополняют коллекцию открытых баз.
  3. Может показаться, что за пару дней никто не насканит ваш 3306 порт. Это заблуждение! Masscan — отличный сканер, и может сканировать со скоростью 10М портов в секунду. А в интернете всего 4 миллиарда IPv4. Соответственно, все 3306-ые порты в интернете находятся за 7 минут. Карл. Семь минут!
    «Да кому это надо?» — возразите вы. Вот и я удивляюсь, глядя в статистику дропнутых пакетов. Откуда за сутки 40 тысяч попыток скана с 3-х тысяч уникальных IP? Сейчас сканят все кому не лень, от мамкиных хакеров до правительств. Проверить очень просто — возьмите любую VPS’ку за $3-5 у любого** лоукостера, включите логирование дропнутых пакетов и загляните в лог через сутки.
Читать еще:  Разблокировка человека в Instagram с телефона

В /etc/iptables/rules.v4 добавьте в конец:
-A INPUT -j LOG —log-prefix «[FW — ALL] » —log-level 4

А в /etc/rsyslog.d/10-iptables.conf
:msg,contains,»[FW — » /var/log/iptables.log
& stop

Какие порты использует Whatsapp

Камеры подключаем к роутеру по схедующей схеме (рис. 0):

Существуют камеры двух видов: одни работают по протоколу rstp, другие берут картинку через http. Поддерживает ли ваша камера rtsp можно узнать из сопроводительной документации.

Для работы камер с rstp на роутере нужно настроить проброс портов (port forwarding — так обычно называется эта настройка в меню роутеров) для протокола rtsp (порт 554, протокол UDP).

Для работы камер через http на роутере нужно настроить проброс портов для протокола http (порт 80 и 8080, протокол tcp)

ПРИМЕР для схемына рис. 0 нужно для камеры 1 сделать проброс порта UDP 554 на порт 554 до ip 192.168.1.2 и для камеры 2 проброс порта 555 на порт 554 до ip 192.168.1.3

Пример проброса портов для роутера Netgear JNR1010 (кликните по картинке для ее увеличения):

Настройки на камерах:

Для большинства камер может потребоваться на самой камере создать пользователя с правами на просмотр или вещание. Если подобное не предусмотрено производителем, то используется логин и пароль для доступа на web-интерфейс камеры. Связку логина и пароля нужно ввести при подключении камеры к серверу видеонаблюдения в разделе «настройки подключения канала».

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

Остальные настройки очень индивидуальны для разных камер. Ниже сводная таблица рекомендуемых настроек камер для каждого тарифа:

Кодек (Video Encoder)

Максимальное рекомендуемое разрешение

** не путать с MJPEG.

Подключение камер к серверу видеонаблюдения

Для доступа к интерфейсу просмотра камер нужно открыть в браузере адрес http://video.mark.ru:8080

Для доступа к интерфейсу настройки и управления камерами нужно открыть в браузере адрес http://video.mark.ru:5555

В открывшемся окне авторизации ввести свой логин от услуги. Он имеет вид xxxx@yyyy и пароль

Откроется окно с списком доступных камер.

Для настройки камеры нужно выбрать ее из списка и нажать на кнопку Редактировать (она обведена на рисунке выше).

В разделе «настройки подключения канала» нужно задать IP адрес камеры, выбрать производителя и модель, соответствующую модели Вашей камеры. Если такого производителя или модели в списке нет, то можно попробовать подобрать те настройки которые подойдут Вашей камере.

Далее необходимо нажать на кнопку «Задать сетевые порты» и проверить/скорректировать порты которые пробрасывались на роутере. Если пробрасывался не стандартный rtsp порт номер 554 или 80 в случае http (или подключается вторая и последующие камеры через один роутер), то нужно в открывшемся окне снять галочку с System.Windows.Data.Binding и в самое правое поле записать номер, соответствующий номеру пробрасываемого на роутере порта для подключаемой камеры:

ПРИМЕР В схеме с рис0 (которая находится в самом начале инструкции) для камеры1 остается стандартный rtsp порт 554, для камеры2 rtsp порт меняется на 555.

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

В общем виде настройки должны выглядеть вот так:

Если настройки камеры были выставлены корректно, в окне настройки должна появиться картинка с камеры (изображение может появиться с задержкой до 60 секунд). Для ускорения процесса рекомендуем воспользоваться интерфейсом просмотра на video.mark.ru.

Для cохранения изменений нужно нажать кнопку «сохранить»

Дополнительные настройки.

В «настройках потока данных» нужно выбрать Формат видео H264, разрешение видео установить рекомендованным для выбранного Вами тарифного плана на камеру.

Для Сохранения изменений нужно нажать кнопку «сохранить».

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector