Реализация TCP-соединения на основе технологии реактивного программирования

Реализация TCP-соединения с сервером для передачи данных во время разработки приложений, работающих с удаленным сервером. Рассмотрение примера TCP-соединения с использованием RxJava. Код TCP-соединения с добавлением операторов для обработок ошибок.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 18.03.2019
Размер файла 254,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Пензенский государственный технологический университет

РЕАЛИЗАЦИЯ TCP-СОЕДИНЕНИЯ НА ОСНОВЕ ТЕХНОЛОГИИ РЕАКТИВНОГО ПРОГРАММИРОВАНИЯ

Маркин Е.И., Рябова К.М., Воронцов А.А.

Во время разработки приложений, работающих с удаленным сервером, часто приходится реализовывать TCP-соединение с сервером для передачи данных. Одним из способов упрощения реализации данной задачи может быть использование реактивного подхода к программированию. Реактивное программирование основано на работе с потоками данных.

Самый простой способ реализации TCP-соединений может выглядеть так как показано на рис. 1.

Рис. 1 Пример реализации TCP-соединения

В приведенном коде connect() - создает java.net.Socket и подключается к серверу, sendBytes() пишет в output-поток сокета, readAnswer() читает из input-потока сокета.

Данный код имеет ряд недостатков, а именно: блокировка записи/чтения, неудобная обработка ошибок и т.д.. Эти и другие проблемы можно решить при помощи RxJava.

RxJava - это библиотека, базирующаяся на технологии ReactiveX (Rx) с открытым исходным кодом, которая изначально разрабатывалась компанией Netflix. Она позволяет быстро и без затруднений писать реактивный код.

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

Рис. 2 Пример TCP-соединения с использованием RxJava

Отличие данного кода заключаются в том, что теперь метод send() возвращает Observable, а не String. Т.е. в результате мы получаем поток с данными, на который нам нужно подписаться при помощи Subscribe и в нем указать, что нужно делать с данными и ошибками.

Для обработки ошибок в RxJava предусмотрены операторы: doOnError(), onErrorReturn(), onErrorResumeNext(), onExceptionResumeNext(), данные операторы собирают ошибки, которые возникают во время выполнения операторов и передают их в обработчик исключений в subscribe(). Оператор retry() повторяет попытку обработки данных n-е количество раз во время получения ошибки. Добавив данные операторы, получаем следующий (рис. 3).

соединение сервер приложение оператор

Рис. 3 Код TCP-соединения с добавлением операторов для обработок ошибок

Для вынесения выполнения данной задачи в отдельный поток существуют операторы:

observeOn() и subscribeOn(). subscribeOn()- переносит выполнение всех операторов, которые указаны выше него, в указанный поток. observeOn() - переносит выполнение операторов, находящихся ниже него, в указанный поток. Комбинирование данных операторов позволяет легко и быстро переключаться между разными потоками (рис. 4).

Рис. 4 Код TCP-соединения с добавлением операторов для переключения между потоками

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

Реактивный подход - это другой подход к программированию, по сравнению с традиционным подходом. Использование потоков данных и функциональных операторов с возможностями ООП дают широкие возможности на этапе разработки.

Список литературы

1. Introduction to Rx / Lee Campbell. 2012. 354 c.

2. Официальный сайт ReactiveX: портал [Электронный ресурс]. Режим доступа: http://reactivex.io/ свободный. Загл. с экрана.

3. Манифест реактивного программирования: портал [Электронный ресурс]. Режим доступа: http://www.reactivemanifesto.org/ свободный. Загл. с экрана.

4. Маркин Е.И. мобильная разработка для абитуриентов / Е.И. Маркин, К.М. Рябова, А.Н. Пименов, Н.А. Левина, А.А. Воронцов // Сборник статей VI международной НПК “Наука и образование: сохраняя прошлое, создаём будущее”. Пенза: "Наука и Просвещение". 2016. С. 30-32.

5. Маркин Е.И. Технология реактивного программирования / Е.И. Маркин, К.М. Рябова, А.Н. Пименов, Н.А. Левина, А.А. Воронцов // Cборник статей победителей IV международной НПК “Инновационные научные исследования: теория, методология, практика”. Пенза: "Наука и Просвещение". 2016. С. 44-47.

6. Маркин Е.И. Использование технологии реактивного программирования при работе с геолокацией. /Е.И. Маркин, К.М. Рябова, А.Н. Пименов, Н.А. Левина, А.А. Воронцов// Cборник статей победителей VI Международной НПК “WORLD SCIENCE: PROBLEMS AND INNOVATIONS”. Пенза: "Наука и Просвещение". 2016. С. 86-89.

Размещено на Allbest.ru


Подобные документы

  • Сетевые соединения для передачи команд и данных между клиентом и сервером. Появление первых клиентских FTP-приложений. Графические пользовательские интерфейсы. Вход в FTP сервер. Настройка, подключение и вход в файловый сервер с клиентских компьютеров.

    курсовая работа [2,6 M], добавлен 25.11.2014

  • Обеспечение безопасности сетевого соединения. Процесс аутентификации при установке соединения и процесс передачи данных. Использование криптостойкого шифрования. Протокол аутентификации Kerberos. Основные этапы процедуры аутентификации клиента.

    презентация [162,8 K], добавлен 10.09.2013

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

    контрольная работа [1,0 M], добавлен 23.11.2011

  • Подключение к серверу баз данных, основные функции. Использование PHP в сочетании с сервером Apache. Закрытие соединения, осуществляемое с помощью функции mysql_close. Обработка ошибок подключения к серверу. Создание таблицы, выполнение SQL-запроса.

    презентация [130,8 K], добавлен 21.06.2014

  • Изучение особенностей проектирования прикладных программ с помощь средств Visual Studio 2010 на языке C#. Расчет конического соединения, конусного градиента, усилия для разрыва соединения и требуемой силы сжатия. Реализация и тестирование программы.

    курсовая работа [1,7 M], добавлен 19.02.2013

  • Разработка API взаимодействия клиентских приложений с сервером СУБД через Pipe под Windows. Устройство и характеристики СУБД SQLite. Методы WinAPI для передачи данных. Реализация взаимодействия через PIPE. Результат работы серверного приложения.

    курсовая работа [596,3 K], добавлен 09.05.2014

  • Общие сведения о протоколе передачи данных FTP. Технические процессы осуществления соединения с помощью протокола FTP. Программное обеспечение для осуществления соединения с помощью протокола FTP. Некоторые проблемы FTP-серверов. Команды FTP протокола.

    реферат [766,6 K], добавлен 07.11.2008

  • Соединения и теоретико-множественные операции над отношениями. Операции выборки, проекции и декартово произведение. Операция соединения по двум отношениям. Построение вычисляемых полей. Запросы модификации данных. Основные ограничения для доменов полей.

    презентация [281,4 K], добавлен 14.10.2013

  • Задача и цели практики: модернизация сайта, разработка базы данных, отображающей время прихода и ухода сотрудников. Разработка формы представления данных на экране. Формирование данных, пригодных для вывода. Реализация технологии всплывающих подсказок.

    отчет по практике [1,3 M], добавлен 16.09.2012

  • Разработка клиент-серверного приложения на основе TCP\IP соединения. Организация работы удаленного генератора псевдослучайных последовательностей. Описание основных функциональных модулей. Интерфейс пользователя, сетевое взаимодействие и алгоритм.

    курсовая работа [223,6 K], добавлен 18.10.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.