Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа.docx
Скачиваний:
0
Добавлен:
02.08.2026
Размер:
691 Кб
Скачать

3. Описание структуры приложения

Server1-1.cpp (см. приложение 1)

Функции:

  1. void sendLog(const std::string& message, const std::string& serverId)

    • Отправляет сообщение на сервер логирования.

    • Используется для записи событий, таких как подключение клиента, обработка запроса и закрытие соединения.

  2. std::string exec(const char* cmd)

    • Выполняет системную команду и возвращает ее вывод.

    • Используется для выполнения команды lsblk --nodeps для получения информации о жестких дисках.

  3. int countDisks(const std::string& output)

    • Подсчитывает количество строк в выводе команды lsblk --nodeps, содержащих слово disk.

    • Возвращает количество обнаруженных жестких дисков.

  4. std::string getCurrentTime()

    • Возвращает текущее время в формате YYYY-MM-DD HH:MM:SS.

  5. void handleClient(int clientSocket, long numProcessors)

    • Обрабатывает запрос клиента:

      • Получает информацию о жестких дисках и текущем времени.

      • Формирует сообщение с количеством логических процессоров, информацией о дисках и текущим временем.

      • Отправляет сообщение клиенту.

      • Логирует события (подключение клиента, обработка запроса, закрытие соединения).

  6. int main()

    • Основная функция сервера 1:

      • Получает количество логических процессоров на сервере.

      • Создает сокет и привязывает его к порту 8081.

      • Запускает прослушивание входящих соединений.

      • Для каждого нового подключения создает поток, который вызывает handleClient.

Server2-1.cpp (см. приложение 2)

Функции:

  1. void sendLog(const std::string& message, const std::string& serverId)

    • Отправляет сообщение на сервер логирования.

    • Используется для записи событий, таких как подключение клиента, обработка запроса и закрытие соединения.

  2. void getSystemInfo(std::string& response, const std::string& unit)

    • Получает информацию о физической памяти системы (общий и свободный объем).

    • Преобразует объем памяти в выбранную клиентом единицу измерения (байты, мегабайты или гигабайты).

    • Формирует строку с информацией о памяти.

  3. std::string getCurrentTime()

    • Возвращает текущее время в формате YYYY-MM-DD HH:MM:SS.

  4. void handleClient(int clientSocket)

    • Обрабатывает запрос клиента:

      • Принимает от клиента единицу измерения (байты, мегабайты или гигабайты).

      • Получает информацию о физической памяти и текущем времени.

      • Формирует сообщение с информацией о памяти и временем.

      • Отправляет сообщение клиенту.

      • Логирует события (подключение клиента, обработка запроса, закрытие соединения).

  5. int main()

    • Основная функция сервера 2:

      • Создает сокет и привязывает его к порту 8082.

      • Запускает прослушивание входящих соединений.

      • Для каждого нового подключения создает поток, который вызывает handleClient.

client.cpp (см. приложение 3)

Функции:

  1. int main()

    • Основная функция клиента:

      • Предлагает пользователю выбрать сервер для подключения (сервер 1 или сервер 2).

      • Устанавливает соединение с выбранным сервером.

      • Если выбран сервер 2, запрашивает у пользователя единицу измерения (байты, мегабайты или гигабайты) и отправляет ее серверу.

      • Получает ответ от сервера и выводит его на экран.

      • Закрывает соединение.

log.cpp (см. приложение 4)

Функции: