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

Алгоритм работы программы

Клиентский процесс устанавливает соединение с выбранным сервером с помощью сокетов. Для прослушивания сообщений от сервера создается отдельный поток, который записывает полученные данные в буфер, доступный для отображения в интерфейсе пользователя.

Серверные процессы, при запуске, создают сокет и начинают его прослушивание для подключения новых клиентов. При подключении клиента для него создается отдельный поток, который обрабатывает его запросы. В этом потоке реализован цикл, который постоянно проверяет сокет на наличие входящих запросов.

Когда пользователь клиента инициирует отправку определенного запроса, этот запрос передается на сервер через сокет. На сервере обработчик потока клиента принимает запрос, распознает его, извлекает необходимые данные и возвращает результат клиенту через тот же сокет.

Обновление данных происходит по следующим сценариям:

  • Клиент отправляет запрос на обновление данных по команде пользователя, и сервер возвращает измененные данные.

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

  • Сервер отправляет новые данные клиенту без запроса, когда происходят изменения в параметрах системы.

Для выполнения дополнительных заданий 1 и 2 на каждом сервере для каждого клиента хранится последняя обновленная информация. В ответ на периодические запросы сервер проверяет, изменилась ли информация для конкретного клиента по сравнению с ранее сохраненной, и отправляет только ту часть ответа, которая была изменена. Автоматическое обновление по инициативе сервера происходит аналогичным образом: сервер отправляет клиенту обновленную информацию по его запросу. При смене режимов сервер сохраняет данные о состоянии пользователя и передает только измененные данные.

Клиент отправляет серверу следующие сообщения:

  • Updates – управляет параметрами, которые передаются клиенту при обновлении, и включает массив из двух булевых значений, определяющих параметры передачи обновлений для каждого пункта.

  • Mode – управляет режимом работы: при значении 1 используется longpoll (отправка параметров по запросу), а при значении 0 – callback (отправка запросов при обновлении).

  • Get – запрос на обновление в режиме callback, передаваемый со значением True.

Проверка на повторный запуск сервера реализуется с использованием встроенных механизмов уникальности сокетов. Это значит, что при попытке запустить второй экземпляр сервера на том же порту и IP-адресе, система обнаружит, что сокет уже занят. В результате, сервер завершит свою работу с сообщением об ошибке, указывающим на проблему с привязкой сокета.

Такой подход обеспечивает надежную защиту от случайного запуска нескольких экземпляров сервера, что может привести к конфликтам и непредсказуемому поведению. Это особенно важно для серверных приложений, где корректная работа и доступность сервиса имеют первостепенное значение. Таким образом, механизмы уникальности сокетов помогают поддерживать стабильность и предсказуемость работы сервера, предотвращая потенциальные проблемы, связанные с многократными запусками.