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

Постановка задачи

Основной задачей данной курсовой работы является разработка многозадачного приложения, выполняющего получение, сбор и вывод системной информации в соответствии с индивидуальным вариантом задания. Многозадачное приложение реализуется на основе технологии «клиент-сервер». Необходимо реализовать два сервера, поддерживающих многопоточность. Каждый сервер должен обрабатывать запросы клиентов, предоставляя системную информацию в соответствии с вариантом задания, и передавать её клиенту с указанием времени. Также необходимо разработать клиентскую часть с интерфейсом, позволяющим выбирать сервер для подключения, с возможностью раздельного получения и отображения данных по каждому из пунктов индивидуального задания.

1. Теоретические основы разрабатываемой системы

1. Архитектура «клиент-сервер»:

1) Суть архитектуры. Вычислительная архитектура «клиент-сервер» представляет собой модель взаимодействия между компьютерами, где один компьютер (сервер) предоставляет ресурсы или услуги, а другие компьютеры (клиенты) используют эти ресурсы или услуги. Взаимодействие между компьютерами осуществляется через передачу запросов и ответов. В контексте данной задачи сервер выполняет функцию предоставления системной информации, а клиент – получения этой информации.

2) Область применения. Вычислительная архитектура «клиент-сервер» широко применяется в распределительных системах, где требуется эффективное распределение ресурсов, управление данными и обеспечение взаимодействия между различными узлами сети. Она используется в веб-приложениях, базах данных, облачных вычислениях, играх, и во многих других областях.

3) Достоинства. Вычислительная архитектура «клиент-сервер» позволяет эффективно масштабировать системы, добавляя или убирая серверы при необходимости. Серверы контролируют доступ к ресурсам, обеспечивая эффективное управление системой. Изменения в логике или ресурсах могут быть внесены на стороне сервера без изменения клиентской части.

4) Недостатки. Вычислительная архитектура «клиент-сервер» требует обеспечения надёжности и отказоустойчивости серверов и их стабильной работы, недоступность одного сервера может негативно отразиться на работе всей системы.

2. Системные средства коммуникации и синхронизации процессов:

1) Сокеты. Сокеты представляют собой программный интерфейс для обеспечения обмена данными между процессами через сеть. Они позволяют реализовать взаимодействие между клиентом и сервером.

2) Многопоточность. Многопоточность используется для эффективной обработки нескольких клиентских запросов одновременно. Каждый клиентский запрос может быть обработан в отдельном потоке на сервере.

3) Протоколы передачи данных. Для обмена данными между клиентом и сервером используются протоколы TCP/IP. TCP отвечает за надёжность и управление соединением, в то время как IP обеспечивает маршрутизацию и доставку пакетов данных между узлами сети.

2. Описание алгоритма работы приложения

Приложение состоит из четырёх программ: лог сервера, сервера 1, сервера 2 и клиента.

Общая схема работы приложения:

  1. Осуществляется запуск серверов.

  2. Клиент подключается к выбранному серверу.

  3. Клиент отправляет запросы на сервер.

  4. Сервер обрабатывает запросы и отправляет ответы клиенту и на лог сервер.

Детальнее рассмотрим алгоритм работы каждой программы.

Сервер 1:

  1. Инициализация:

    • Создается сокет для сервера.

    • Настраивается адрес сервера (порт 8081, принимает соединения на всех интерфейсах).

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

  2. Обработка подключений:

    • В бесконечном цикле сервер принимает входящие соединения от клиентов.

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

  3. Обработка запроса клиента:

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

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

    • Подсчитывается количество жестких дисков.

    • Формируется сообщение, содержащее:

      • Количество логических процессоров.

      • Информацию о жестких дисках.

      • Текущее время.

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

  4. Логирование:

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

  5. Завершение работы:

    • После обработки запроса соединение с клиентом закрывается.

Сервер 2:

  1. Инициализация:

    • Создается сокет для сервера.

    • Настраивается адрес сервера (порт 8082, принимает соединения на всех интерфейсах).

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

  2. Обработка подключений:

    • В бесконечном цикле сервер принимает входящие соединения от клиентов.

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

  3. Обработка запроса клиента:

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

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

    • Память преобразуется в выбранную единицу измерения.

    • Формируется сообщение, содержащее:

      • Общий объем физической памяти.

      • Свободный объем физической памяти.

      • Текущее время.

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

  4. Логирование:

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

  5. Завершение работы:

    • После обработки запроса соединение с клиентом закрывается.

Клиент:

  1. Выбор сервера:

    • Пользователь выбирает, к какому серверу задач подключиться:

      • Сервер 1 (порт 8081).

      • Сервер 2 (порт 8082).

  2. Подключение к серверу:

    • Создается сокет для подключения.

    • Настраивается адрес сервера (IP-адрес 127.0.0.1 и выбранный порт).

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

  3. Отправка данных:

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

  4. Получение ответа:

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

  5. Завершение работы:

    • Сокет закрывается, и клиент завершает работу.

Сервер логирования:

Инициализация:

    • Создается сокет для сервера логирования.

    • Настраивается адрес сервера (порт 9000, принимает соединения на всех интерфейсах).

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

  1. Обработка подключений:

    • В бесконечном цикле сервер принимает входящие соединения от серверов задач.

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

  2. Обработка сообщений:

    • Поток принимает сообщения от сервера задач через сокет.

    • Каждое сообщение записывается в файл server.log с указанием текущего времени.

    • Если соединение с сервером задач закрывается, поток завершает свою работу.

  3. Завершение работы:

    • Сервер логирования продолжает работать в бесконечном цикле, пока не будет принудительно остановлен.