- •Задание на курсовую работу
- •Оглавление
- •Введение
- •Постановка задачи
- •1. Теоретические основы разрабатываемой системы
- •2. Описание алгоритма работы приложения
- •3. Описание структуры приложения
- •Основная функция клиента:
- •4. Результаты работы приложения
- •Заключение
- •Список использованной литературы
- •Приложение 1 Текст программы «server111.Cpp»
- •Основная функция сервера логирования:
- •Приложение 2 Текст программы «server222.Cpp»
- •Приложение 3 Текст программы «client.Cpp»
- •Приложение 4 Текст программы «log.Cpp»
- •Приложение 5 Текст программы «server1.Cpp»
- •Приложение 6 Текст программы «server2.Cpp»
- •Приложение 7 Текст программы «client.Cpp»
- •Приложение 8 Текст программы «clientOs.Cpp»
3. Описание структуры приложения
Server1-1.cpp (см. приложение 1)
Функции:
void sendLog(const std::string& message, const std::string& serverId)
Отправляет сообщение на сервер логирования.
Используется для записи событий, таких как подключение клиента, обработка запроса и закрытие соединения.
std::string exec(const char* cmd)
Выполняет системную команду и возвращает ее вывод.
Используется для выполнения команды lsblk --nodeps для получения информации о жестких дисках.
int countDisks(const std::string& output)
Подсчитывает количество строк в выводе команды lsblk --nodeps, содержащих слово disk.
Возвращает количество обнаруженных жестких дисков.
std::string getCurrentTime()
Возвращает текущее время в формате YYYY-MM-DD HH:MM:SS.
void handleClient(int clientSocket, long numProcessors)
Обрабатывает запрос клиента:
Получает информацию о жестких дисках и текущем времени.
Формирует сообщение с количеством логических процессоров, информацией о дисках и текущим временем.
Отправляет сообщение клиенту.
Логирует события (подключение клиента, обработка запроса, закрытие соединения).
int main()
Основная функция сервера 1:
Получает количество логических процессоров на сервере.
Создает сокет и привязывает его к порту 8081.
Запускает прослушивание входящих соединений.
Для каждого нового подключения создает поток, который вызывает handleClient.
Server2-1.cpp (см. приложение 2)
Функции:
void sendLog(const std::string& message, const std::string& serverId)
Отправляет сообщение на сервер логирования.
Используется для записи событий, таких как подключение клиента, обработка запроса и закрытие соединения.
void getSystemInfo(std::string& response, const std::string& unit)
Получает информацию о физической памяти системы (общий и свободный объем).
Преобразует объем памяти в выбранную клиентом единицу измерения (байты, мегабайты или гигабайты).
Формирует строку с информацией о памяти.
std::string getCurrentTime()
Возвращает текущее время в формате YYYY-MM-DD HH:MM:SS.
void handleClient(int clientSocket)
Обрабатывает запрос клиента:
Принимает от клиента единицу измерения (байты, мегабайты или гигабайты).
Получает информацию о физической памяти и текущем времени.
Формирует сообщение с информацией о памяти и временем.
Отправляет сообщение клиенту.
Логирует события (подключение клиента, обработка запроса, закрытие соединения).
int main()
Основная функция сервера 2:
Создает сокет и привязывает его к порту 8082.
Запускает прослушивание входящих соединений.
Для каждого нового подключения создает поток, который вызывает handleClient.
client.cpp (см. приложение 3)
Функции:
int main()
Основная функция клиента:
Предлагает пользователю выбрать сервер для подключения (сервер 1 или сервер 2).
Устанавливает соединение с выбранным сервером.
Если выбран сервер 2, запрашивает у пользователя единицу измерения (байты, мегабайты или гигабайты) и отправляет ее серверу.
Получает ответ от сервера и выводит его на экран.
Закрывает соединение.
log.cpp (см. приложение 4)
Функции:
