Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ПИ_ИКТ Программирование по С++ (1 семестр) _Хотов.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5.83 Mб
Скачать

Лабораторная работа № 26. Разработка сетевых приложений Цель работы:

Овладеть навыками разработки сетевых приложений

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

Задачу можно выполнять вдвоем

Любая задача требует реализации двух программ -- клиента и сервера (либо единой программы, которая может выступать в роли либо сервера, либо клиента). Сервер ждет подсоединения от любого удаленного клиента, клиент инициирует соединение с удаленным сервером. Номер порта сервера является параметром как сервера, так и клиента.

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

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

Задания:

  1. Реализовать программу "talk" (клиент и сервер), позволяющую организовать диалог двух пользователей. Текстовая строка посылается партнеру по нажатию "Enter". Соединение разрывается при наборе строки, содержащей один-единственный символ "." (точка) (2).

  2. Реализовать пару программ (клиент--сервер), позволяющую переслать произвольный (бинарный) файл с одной машины на другую (2).

  3. Сетевой "Морской бой" (4).

  4. Сетевые "Крестики-нолики" на бесконечном поле (3).

  5. Сетевая игра "Быки и коровы" (3). (Каждый играющий задумывает четырехзначное число. Задача -- угадать число соперника. На очередном ходе игрок предлагает число и получает в ответ число быков и коров, бык соответствует правильной цифре на своем месте, корова -- цифре, которая содержится в записи числа, но названа не на своем месте.)

  6. Сетевая игра "Го" (5) http://ournetlife.ru/category/games/ho_-_kitaiskaya_logicheskaya_igra.html

  7. Реализовать сервер и клиент так, чтобы сервер мог работать с несколькими клиентами одновременно (с помощью потоков на сервере). Каждый клиент посылает на сервер приветствие, после чего сервер ждёт случайное число секунд от 1 до 10 и посылает ответ клиенту.

  8. Реализовать клиент, который запрашивает у пользователя пароль, вычисляет его хеш-сумму (CRC-32), передаёт хеш-сумму на сервер, после чего сервер сравнивает её со своей хеш-суммой (которую он вычисляет по паролю так же, как клиент) и посылает клиенту подтверждение - пароль верен или нет.

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

  10. Реализовать сервер, который может передавать команды системе на исполнение (с помощью функции system()). Пользователь вводит команды интерактивно в клиенте, клиент передаёт их на сервер, сервер печатает команду и исполняет её.

Проект "Файловый сервер": Filesrv.zip

Варианты

  1. Проект "Файловый сервер". Реализовать команду "get" для клиента, которая получает файл от сервера.

  2. Проект "Файловый сервер". Реализовать команду "put" для клиента, которая пересылает файл на сервер.

  3. Проект "Файловый сервер". Реализовать команду "ls" для клиента, которая получает от сервера список файлов в текущей директории и распечатывает его на экране терминала.

  4. Проект "Файловый сервер". Реализовать команду "mget" для клиента, которая получает несколько файлов от сервера. Список файлов задается с использованием звездочки "*" в имени файла.

  5. Проект "Файловый сервер". Реализовать команду "mput" для клиента, которая передает серверу несколько файлов. Список файлов задается с использованием звездочки "*" в имени файла.