Чат - модульная программа реализующая идею открытых групповых чатов. Модули:
- Сервер
- Консольный клиент
- Графический клиент
- Чат-бот
- Вспомагательный модуль
Задача сервера - устанавливать соединение с клиентами и организовывать общение между ними.
- После подключения клиента создает новый поток для связи с ним
- Инициализирует клиента по специальному протоколу
- Уведомляет клиентов о поступающих сообщениях
Задача клиента - подключиться к серверу и реализовывать взаимодействие пользователя с чатом через консоль
- Устанавливает соединение по специальному протоколу
- Создает поток для обработки входящих сообщений
- Отправляет сообщения, введенные пользователем
Графический клиент работает по принципам консольного клиента, предоставляя пользователю графический интерфейс
Чат-бот - консольный клиент, у которого нет возможности отправлять сообщения из консоли, он автоматически отправляет сообщения по командам:
- дата
- день
- месяц
- год
- время
- час
- минуты
- секунды
Вспомагательный модуль содержит классы - помошники:
- Connection - управляет входными и выходными потоками от сокета
- ConsoleHelper - управляет вводом и выводом из консоли
- Message - POJO класс, содержит данные сообщений
- MessageType - определяет элементы протокола связи сервера и клиентов
Фреймворки:
- java.io
- java.net
- java.swing
- java.awt
- java.text
- java.util
Использованные паттерны:
- Паттерн MVC
- Когда новый клиент хочет подсоединиться к серверу, сервер должен запросить имя клиента.
- Когда клиент получает запрос имени от сервера он должен отправить свое имя серверу.
- Когда сервер получает имя клиента он должен принять это имя или запросить новое.
- Когда новый клиент добавился к чату, сервер должен сообщить остальным участникам о новом клиенте.
- Когда клиент покидает чат, сервер должен сообщить остальным участникам об этом.
- Когда сервер получает текстовое сообщение от клиента, он должен переслать его всем остальным участникам чата.
Server-1.0-SNAPSHOT.jar - сервер
ConsoleClient-1.0-SNAPSHOT.jar - консольный клиент
GuiClient-1.0-SNAPSHOT.jar - графический клиент
Bot-1.0-SNAPSHOT.jar - бот
Важно! Сначала запускается и конфигурируется серверное приложение