Лабораторная работа №2. Сокеты, модель Postfix/apache. Лабораторная работа №3. Сокеты, многопоточный сервер.
Лабораторная работа
в среде программирования GNU C++ pod Linux
Среда программирования: GNU C++ pod Linux
Название работы: Лабораторная работа №2. Сокеты, модель Postfix/apache. Лабораторная работа №3. Сокеты, многопоточный сервер.
Вид работы: Лабораторная работа
Описание: Лабораторная работа №2. Сокеты, модель Postfix/apache.
Изучить интерфейс сокетов в Юниксе (системные вызовы socket, bind, listen, accept, connect) и написать заданный вариантом сервер. Модель приложения должна быть аналогичной модели postfix/apache.
Сервер при приеме соединений должен порождать дочерние процессы, которые принимают запросы и выполняют их. Количество дочерних процессов должно быть ограничено. Каждый дочерний процесс после обработки одного клиента должен вместе с родительским процессом пытаться принимать следующие соединения. Количество клиентов, обслуживаемых одним дочерним процессов должно быть тоже ограниченно. После обслуживания максимального числа клиентов, дочерний процесс должен выйти, а родительский процесс, если к этому моменту количество дочерних процессов достигло максимума, должен продолжить принимать новые соединения.
Все детали протоколов разрабатываются студентами самостоятельно и согласуются с преподавателем. Сервер должен допускать только разумное поведение клиентов. Например, в третьем варианте недопускается ставить крестик и нолик на уже занятую клетку. И тому подобное.
Задание варианта: Сервер, вычисляющий простые арифметические выражения в обратной польской записи.
Сервер должен принимать выражения, содержащие операции +, -, *, /, по одному выражению на строку, вычислять их и посылать ответ, разрывать соединение после приема пустой строки. При приеме некорректного выражения, посылать ответ 'error'.
Лабораторная работа №3. Сокеты, многопоточный сервер.
Варианты:
1. Сервер обмена мгновенными сообщениями.
2. Сервер обмена сообщениями в режиме офлайн.
3. Игровой сервер. Клиенты играют в царя горы друг против друга.
Пояснения к заданиям
Во первом варианте достаточно реализовать простейший протокол: для приема и передачи сообщений клиент должен представиться (команда hello <name> ), а потом передавать сообщения командой send <recipient> <message> . Сообщения однострочные, передаются адресату, если он присоединен. При отсутствии адресата среди присоединившихся клиентов, отправляющему посылается сообщение об ошибке. Предусмотреть возможность просмотра списка присутствующих на сервере участников (команда who ). По команде bye сервер должен разрывать соединение.
Во втором варианте протокол аналогичен протоколу из первого варианта, но сообщения не посылаются адресату сразу, а записываются в специальные файлы (почтовые ящики). Командаwho необязательна. Для чтения сообщения предусмотреть команду receive, по которой сервер выдает накопившиеся сообщения и опустошает почтовый ящик.
В третьем варианте игра заключается в том, чтобы «сбросить с горы» всех противников. Каждый участник представляется командой hello <name>, после чего становится виден остальным участникам (по команде who). Командой kill <name> участник отсоединяет от сервера (сбрасывает с горы) противника. Выигрывает тот, кто кому удалось избавиться от всех противников.
Вариант №3. - Объектно-ориентированное программирование.
Лабораторные оформляются в виде одного cpp-файла, либо в виде нескольких cpp- и h-файлов. Программа должна компилироваться любым из широко распространенных компиляторов. При проверке могут использовать gcc версии 4.4 и выше и clang версии 3.1 и выше. Платформа может быть как 32-, так и 64-разрядной. Программа должна корректно работать под всеми широко-распространенными ОС, кроме, возможно, Windows (вы должны объяснить причину отказа от поддержки Windows). Проверка будет осуществляться под DragonFly BSD версии не ниже 3.0, FreeBSD версии не ниже 9.0 и Mac OS X, версии не ниже 10.8. Каждое использование директив препроцессора (кроме как для стражей включения звголовочных файлов) должно быть аргументировано и может повлечь снижение оценки.
Входные данные подаются на стандартный ввод в текстовом виде, результат должен печататься на стандартный вывод. Формат ввода и вывод жестко задан. Программа не должна выводить ничего, кроме того, что указано в задании. В задании могут указываться параметры командной строки. При неудачном завершении программы, код возврата должен отличаться от 0 и на стандартный вывод об ошибках должно выводиться короткое информативное сообщение об ошибке.
Год: 2013
Данный заказ (лабораторная работа) выполнялся нашим сайтом в 2013-м году, в рамках этого заказа была разработана программа в среде программирования GNU C++ pod Linux. Если у Вас похожее задание на программу, которую нужно написать на GNU C++ pod Linux, либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2013-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".
Тел.:
+79374242235
Viber: +79374242235 Telegram: kursovikcom ВКонтакте: kursovikcom WhatsApp +79374242235 E-mail: info@kursovik.com Skype: kursovik.com |