Разработано два приложения для обмена текстовыми сообщениями по сети с помощью консоли (терминала) между двумя и более пользователями.
Первое приложение - сервер чата, ожидает подключения пользователей.
Второе приложение - клиент чата, подключается к серверу чата и осуществляет доставку и получение новых сообщений.
Все сообщения должны записываться в file.log как на сервере (server.log), так и на клиентах(client.log). File.log дополняется при каждом запуске, а также при отправленном или полученном сообщении. Выход из чата осуществлен по команде exit.
- Установка порта для подключения клиентов через файл настроек (settings.properties);
- подключение к серверу в любой момент и присоединиться к чату;
- Отправка новых сообщений клиентам;
- Запись всех отправленных через сервер сообщений с указанием имени пользователя и времени отправки.
- Выбор имени для участия в чате;
- Читает настройки приложения из файла настроек (settings.properties) - хостинг, номер порта сервера;
- Подключение к указанному в настройках серверу;
- Для выхода из чата нужно набрать команду выхода - “/exit”;
- Каждое сообщение участников записывается в файл логирования (client.log). При каждом запуске приложения файл дополняется.
- Сервер одновременно ожидает новых пользователей и обрабатывает поступающие сообщения от пользователей;
- Использован сборщик пакетов maven;
- Код размещен на github;
- Код покрыт unit-тестами.
P.S.: блок-схема не по госту, но она тут больше как что-то среднее между схемой приложения и структурной
Описание архитектуры приложений
На стороне сервера реализован один поток, который создается при каждом подключении. Данный поток при получении сообщения от любого клиента рассылает его всем подключившимся клиентам. На стороне клиента реализовано два параллельных потока, один на чтение в бесконечном цикле, другой - на запись, с условием выхода по команде /exit От каждого клиента отправляется сообщение вида { текущее время } (имя пользователя): текст сообщения