Студент - Зайкин Дмитрий Группа - CPLUS-68
Проект чата разделен на серверную и клиентскую части. Проект реализован для ОС Linux (для кроссплатформенности клиенской части требуется откорректировать класс Network). Взаимодействие программ осуществляется по сети (TCP): настройка IP-адреса указана ниже по тексту. Для хранения информации серверная часть приложения использует базу данных MySQL.
Кодировка проекта: UTF-8
❗ Перед использованием клиентской части приложения установить в терминале кодировку UTF-8 (перед подключением из Windows к Linux по SSH выполнить команду: chcp 65001
).
sudo apt-get update
sudo apt-get install mysql-server
Открыть MySQL в терминале:
sudo mysql
Добавление БД:
CREATE DATABASE IF NOT EXISTS chat
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Cоздать пользователя БД для входа ALL PRIVILEGES
:
CREATE USER 'chatchat_user'@'localhost' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON *.* TO 'chat_user'@'localhost';
FLUSH PRIVILEGES;
CREATE USER 'chat_user'@'127.0.0.1' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON *.* TO 'chat_user'@'127.0.0.1';
FLUSH PRIVILEGES;
Выход:
\q
Перезапуск БД:
sudo systemctl restart mysql
Выполнить проверку доступа к MySQL локально на сервере:
mysql -u chat_user -p -h 127.0.0.1
❗ Данные созданного пользователя и название БД должны совпадать со значениями полей класса DataBaseMySQL
в файле BD_MySQL.h
:
SQL_USER
- пользователь;SQL_PASS
- пароль;SQL_BD
- база данных.
Для ОС: Linux Ubuntu/Debian:
sudo apt-get update
sudo apt-get install nlohmann-json3-dev
❗Важно: унификация версий JSON для сетевого взаимодействия:
Клиентская и серверная части взаимодействуют по сети (TCP) и используют JSON для сериализации данных, на всех компьютерах должна использоваться одинаковая минимальная версия библиотеки nlohmann/json
.
В CMakeLists.txt
заменить номер версии на минимальную:
Как проверить версию на Linux:
dpkg -s nlohmann-json3-dev | grep Version
Version: 3.7.3-1
В CMakeLists.txt
указать эту версию:
find_package(nlohmann_json 3.7.3 REQUIRED)
Для ОС: Linux Ubuntu/Debian:
sudo apt update
sudo apt install libmysqlclient-dev
sudo apt-get install pkg-config
Предполагаемые пути установки файлов:
- Заголовочные файлы:
/usr/include/mysql/
(mysql.h
) - Библиотека:
libmysqlclient.so
/usr/lib/x86_64-linux-gnu/
Проверка наличия файлов (mysql.h
, libmysqlclient.so
):
ls /usr/include/mysql/ | grep "mysql.h"
ls /usr/lib/x86_64-linux-gnu | grep "libmysqlclient.so"
Взаимодействие программ осуществляется по сети (TCP). IP адресс сервера задается в обьекте network
класса NetworkClient
файл main.cpp
клиенской части (/client/src/main.cpp
).
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j$(nproc)
mkdir build
cd build
make chat_server -j$(nproc)
cd build
make chat_client -j$(nproc)
make clean
# Сервер
./build/server/chat_server
# Клиент
./build/client/chat_client