Разработать сетевой чат на языке программирования C++, предоставляющий возможность регистрации пользователей и обмена текстовыми сообщениями.
Создание консольного приложения, способного обеспечивать взаимодействие между зарегистрированными пользователями через сеть.
При запуске чата должно предоставляться меню для входа в существующий аккаунт или создания нового. При создании нового аккаунта пользователь должен указать уникальное имя и пароль.
Зарегистрированные пользователи могут отправлять и принимать текстовые сообщения. Сообщения должны отображаться в консоли с указанием отправителя и времени отправки. Пользователь должен иметь возможность выбора адресата сообщения.
Доступ к чату должен требовать аутентификации по логину и паролю. Пароли должны храниться в безопасном хэшированном виде. При неудачной попытке входа пользователь должен получить соответствующее уведомление.
Использовать C++ для разработки.
Использовать сокеты для обеспечения сетевого взаимодействия между клиентами.
Данные о пользователях, сообщениях и других необходимых сведениях следует хранить в структурированных файлах или базе данных.
Предусмотреть обработку ошибок ввода-вывода, сетевых ошибок и ошибок аутентификации.
Реализовать консольный интерфейс для взаимодействия с пользователем.
Система должна осуществлять регистрацию пользователя по логину и паролю, хранящемуся в хэшированном виде, а также должна предоставлять возможность создания нового аккаунта. Система должна обеспечивать проверку уникальности идентификаторов пользователей. Также система должна уметь обрабатывать такие ошибки как неверный логин или пароль. Для реализации вышеуказанных требований система должна использовать простейший графический интерфейс.
Система отправки сообщений должна реализовывать такой функционал как отправка сообщения выбранному пользователю с указанием даты и времени отправки. Возможно использование текстового редактора (e.g. vim) для набора сообщения с клавиатуры.
Система получения сообщений должна реализовывать такой функционал как получение сообщений от активных пользователей. Текст сообщения должен выводиться в консоль с указанием имени(псевдонима) отправителя, датой и временем отправки/получения сообщения отправителем.
Система должна обеспечивать удобное хранение данных о пользователях, сообщениях и других необходимых сведениях, путём записи данных в структурированные файлы или базу данных.
Реализовать модульные тесты для каждого компонента системы. Тестировать различные сценарии взаимодействия между пользователями.
Провести тестирование работы системы в условиях реального сетевого взаимодействия.
Разработать документацию по использованию чата. Предоставить исходный код проекта и инструкции по сборке.
Планируемая дата завершения проекта: 15.01.2024
Регулярные обновления о ходе разработки и проблемах, возникающих в процессе.
Подпись Заказчика: ____________________________
Дата: 19.11.2023