Клиент-серверные приложения Си под Linux

Отменен
Заказ
5424899
Раздел
Программирование
Предмет
C/C++
Тип работы
Антиплагиат
Не указан
Срок сдачи
22 Мая 2023 в 19:55
Цена
Договорная
Блокировка
5 дней
Размещен
16 Мая 2023 в 06:48
Просмотров
53
Описание работы

Задание по очередям сообщений 1.1

Нужно написать чат с общей комнатой. Клиент и сервер. Сервер создает очередь, в которую записываются все сообщения от всех пользователей. Когда клиент присоединяется, он уведомляет сервер о том, что он новый клиент, может указать свое имя. Это имя рассылается всем остальным клиентам, которые подключены к этому серверу (читают из одной очереди, которая обслуживает сервер). Нужно создать служебное сообщение, в котором хранится список всех подключенных клиентов, и, как только новый клиент подключился, очередь расставили, соответственно, другие клиенты забрали эти сообщения и обновили у себя список подключенных пользователей, и теперь они видят еще одного пользователя. Когда кто-то пишет сообщение, оно располагается в очередь, сервер читает его и рассылает его всем клиентам, которые в данный момент подключены к данному чату. Рассылает - означает нужно столько раз продублировать это сообщение с нужными приоритетами, чтобы клиенты могли его забрать каждый свое. Можно использовать многопоточность. Чат одновременно читает сообщения и ожидает ввода пользователя. Как увязать блокирующие функции: создаем два потока - один всегда ждем сообщения от сервера, крутится в цикле и их обрабатывает и обновляет список сообщений и список пользователей, второй всегда ждет ввода с клавиатуры и, как только получает, отправляет на сервер.


Задание по общей памяти и семафорам 1.2

Такой же чат нужно выполнить с использованием общей памяти и семафоров.


2.1 Многопроцессный клиент-сервер

При запуске случающий (главный) сервер порождает пул заранее готовых процессов/потоков с обслуживающими серверами. Слушающий сервер следит за пулом обслуживающих серверов и при подключении клиента идентификатор свободного сервера возвращает клиенту, клиент подключается к нему. При количестве клиентов больше количества обслуживающих серверов создается новая порция обслуживающих серверов. Если количество клиентов уменьшается, лишние процессы уничтожаются. Для уведомления слушающего сервера можно использовать массив (только для потоков - слушающий сервер будет искать в массиве 0 и перераспределять на него нагрузку), канал, очереди сообщений, сигналы. Реализовать для TCP или UDP.


2.2 Клиент-сервер на основе модели Производитель-потребитель.

Запускаем слушающий сервер, он создает очередь обслуживания и пул обслуживающих серверов. Есть клиент, он посылает заявку серверу, сервер ставит заявку в очередь запросов. В это время любой свободный сервер забирает заявку, решает ее, ставит в очередь ответов, слушающий сервер забирает ее оттуда и передает ее клиенту. Либо обслуживающий сервер сам может передать заявку клиенту обратно (для этого в очереди запросов должен быть идентификатор клиента).  Реализовать для TCP или UDP.

Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу 1 год
Средний балл 4.96
Стоимость Назначаете сами
Эксперт Выбираете сами
Уникальность работы от 70%
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Темы журнала
Показать ещё
Прямой эфир