Легенда

В офисе «Байты и Чаты Inc.» возникла необходимость в разработке консольного чата с возможностью обмена файлами. Разработчики, один из которых вы, приступили к созданию. Целью проекта стало предоставление пользователю удобного средства для общения в консоли, а также возможности передачи файлов между участниками чата. Задача не их простых, но ваш тимлид оставил вам подробную инструкцию.

Цель

Создание чата с возможность обмена файлами

Задача

Создание консольного чата с использованием встроенных механизмов языка Java. Чат должен иметь:

Сервер:

  1. Хранит все сообщения от всех пользователей, а также дату отправки каждого сообщения.
  2. Авторизует пользователя в системе. При авторизации отдает пользователю всю историю переписки.
  3. Принимает новые сообщения от пользователей, а затем тиражирует их на всех подключенных пользователей.
  4. При отправке файла открывает отдельное соединение для его передаче. Отправляет полученный файл всем пользователям, кроме отправителя.

Клиент:

  1. Умеет авторизоваться на сервере, принять все сообщения.
  2. Отправлять сообщения.
  3. Получать сообщения.
  4. Отправлять файлы.
  5. Получать файлы.

Проще всего описать работу чата диаграммой: