Легенда
В рамках этого проекта разрабатывается клиент-серверное приложение, где сервер принимает входящее TCP-соединение от множества клиентов и передаёт сообщения от одного клиента другому. Сервер также взаимодействует с базой данных, хранящей информацию о пользователях (имена, пароли) и их сообщениях.
Цель
Реализовать систему обмена сообщениями, где клиенты могут подключаться к серверу, отправлять и получать сообщения, а сервер управляет подключениями клиентов, хранит данные о пользователях и передаёт сообщения между ними.
Основные компоненты системы
Сервер (Консольное приложение):
- TCP-соединение: сервер принимает входящее TCP-соединение от множества клиентов, обрабатывает запросы и передаёт сообщения от одного клиента другому.
- Взаимодействие с базой данных:
- Сервер взаимодействует с базой данных, которая хранит:
- Имя пользователя и пароль (для аутентификации).
- Историю сообщений между пользователями.
- Передача сообщений: сервер принимает сообщение от одного клиента и передаёт его другому клиенту, обеспечивая правильную маршрутизацию.
- Стек технологий:
- CMake — для сборки проекта.
- QT (или Boost) — для межсетевого взаимодействия и управления TCP-соединением.
- База данных для хранения данных пользователей и сообщений (например, SQLite или MySQL).
Клиент (Приложение с пользовательским интерфейсом):
- Подключение к серверу: клиент при старте приложения устанавливает TCP-соединение с сервером.
- Получение списка пользователей: после подключения клиент получает от сервера список зарегистрированных пользователей и отображает его в интерфейсе.
- Выбор пользователя: при выборе пользователя открывается поле ввода сообщения и история сообщений между выбранным пользователем и текущим пользователем.
- Отправка и получение сообщений: пользователь вводит сообщение в поле ввода, которое затем отправляется на сервер. Клиент ожидает ответа от сервера, получая сообщение другого пользователя.
- Интерфейс: пользовательский интерфейс разрабатывается с использованием Qt, обеспечивающего удобное отображение данных (списки пользователей, история сообщений, поля ввода).
Стек технологий:
- C++: язык программирования для реализации клиент-серверного взаимодействия и логики.
- Qt: для создания пользовательского интерфейса клиента и обеспечения межсетевого взаимодействия.
- Boost или Qt Networking: для организации TCP-соединений между клиентом и сервером.