Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторная работа8.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
143.87 Кб
Скачать

5. Цели и задачи

Познакомиться с устройством семейства протоколов TCP/IP. Изучить механизм коммуникации процессов – сокеты. Научиться использовать сокеты для организации взаимодействия удаленных процессов.

6. Порядок выполнения лабораторной работы

1. Разработать алгоритм решения задания, используя для коммуникации между сервером и клиентами сокеты потока.

2. Создать приложение сервер и приложение клиент.

3. Протестировать работу приложений.

7. Варианты заданий (1-15)

1.

Реализовать сетевую игру со следующими правилами. Игра ведется между двумя игроками. В ящике лежат 6 черных и 2 белых шара. На первом ходу игры первый и второй игроки достают по шару, если у обоих оказались белые шары, результатом игры считается ничья и игра завершается, если только у одного шар белый, такой игрок объявляется победителем и игра завершается, если у обоих шары черные начинается следующий аналогичный ход игры. В клиентах отображать не только окончательный результат игры, но и состояния игрока и его оппонента на каждом ходе игры.

2.

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

3.

Реализовать сетевую игру со следующими правилами. На сервере хранится ящик с лотерейными билетами, выигрышным считается тот билет, чей номер является «счастливым числом». К серверу может подключиться произвольное число клиентов и либо взять один билет (если это возможно), либо запросить от сервера статистику, сколько билетов осталось в ящике и сколько было вытащено выигрышных билетов.

4.

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

5.

Реализовать сетевую игру со следующими правилами. Игра ведется между двумя либо тремя игроками. Игроки расположены на верхнем этаже башни из К этажей, лестницы между этажами могут располагаться произвольно, так 3-й этаж может быть связан лестницей со 2-м или не иметь такой лестницы, а вместо этого иметь выход на 10-й этаж. Игроки могут перемещаться с этажа на этаж. На некотором этаже расположено сокровище, первый игрок, зашедший на такой этаж, его получает. Игроки могут перемещаться с этажа на этаж согласно имеющимся путям. Игра заканчивается, когда хотя бы один игрок дойдет до первого этажа и этот игрок считается победителем, также отмечается игрок, овладевший сокровищем. В клиентах отображать не только окончательный результат игры, но и состояния игрока и его оппонентов на каждом ходе игры.

6.

Реализовать сетевую игру со следующими правилами. Игра ведется между двумя игроками. Каждому игроку выдается список предметов, которые они должны найти на карте (списки у игроков могут быть различными), игроки помещаются в некую точку карты, из которой могут смещаться влево, вправо, вниз и вверх. Когда игрок встает на нужный ему предмет, предмет помечается в списке игрока найденным и пропадает с карты, выигрывает тот игрок, который первым найдет все предметы из списка. Отображать состояния игрока и его оппонента на каждом ходе игры.

7.

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

8.

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

9.

Реализовать сетевую игру со следующими правилами. Игра ведется между двумя игроками. Одному игроку назначается роль «наземника», другому роль «летающего». Игроки ставятся в некую клетку карты, карта состоит из проходимых полей и стенок. «Наземник» может перемещаться только по проходимым областям карты, для «летающего» такого ограничения нет, но «летающий» может сделать ход только после того, как «наземник» сходил дважды. Выигрывает тот игрок, который быстрее достигнет выделенной клетки на карте. Отображать состояния игрока и его оппонента на каждом ходе игры.

10.

Сервер может работать с несколькими клиентами одновременно. Клиент подключившись к серверу может выбрать вид уравнения (Ax+B=0 ; Ax2+Bx+C=0 ; { Ax+By+C=0 ; Cx+Dy+E=0 ; } ; { Ax2+By2+C=0 ; Cx2+Dy2+E=0 ; } ), отправить серверу коэффициенты и получить от сервера решение уравнения. Учитывать ситуацию, когда уравнение не имеет решений.

11.

Реализовать сетевую игру со следующими правилами. В игре может участвовать до пяти игроков (реализовать возможность начала игры и в ситуации, когда число клиентов меньше 5-и). На сервере хранится коробка конфет с разными начинками. Игроки ходят по очереди. Сервер отправляет игроку состояние коробки конфет (где и сколько конфет осталось), игрок выбирает три конфеты и забирает их из коробки, если все три конфеты имеют одинаковую начинку, игрок считается победителем и игра завершается, иначе ходит следующий игрок и т.д. по кругу. Если в коробке осталось менее трех конфет игра завершается ничьей.

12.

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

13.

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

14.

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

15.

Реализовать сетевую игру со следующими правилами. Сервер ожидает подключения К клиентов. Каждому клиенту сервер отсылает карту дорог. Каждый клиент отсылает серверу выбранный им маршрут из начального пункта в конечный. Сервер выделяет тех клиентов (и отсылает их имена всем клиентам), чьи пути оказались минимальны.