Мы с Димой три часа обсуждали то, как извести наш первый курс... составляли варианты 5й лабораторной.
Даже немножко переработали) а для отдельных выпендрежников у нас отдельный вариант.
Вообще, конечно, было очень весело... вы только посмотрите на наши обозначения)
Ну да ну да... клиент под сиянием недовифлеемской (пересатанинской) звезды через облачко обращается к индексатору, тот в свою очередь через трубу спускает свиток модулю сопряжения и через странную стрелочку отсылает его другой машине... или там команда с криком "КИИИ-Я!!!" и ударом ноги влетает в сокет... (ну мы немножко ошиблись в описании и команда у нас сама себя передавала через сокет)
Да что я рассказываю посмотрите сами...
6 лаб от Капитана Очевидности
Вариант 1 (Удаленное управление компьютером):
1. Клиент выводит запрос на ввод пользователю (‘$ ’), пользователь вводит команду UNIX, и клиент:
a. По каналам отправляет команду на МС
b. Отправляет команду через очередь сообщений на МС (необходимо реализовать оба варианта)
2. МС первой машины отправляет команду на МС второй машины, который записывает команду в разделяемую область памяти, регулируемую семафорами.
3. Сервер считывает команду из разделяемой памяти, и делает вызов system() с этой командой в аргументе.
Вариант 2 (Сервер времени):
1. Клиент отсылает через разделямую память МСу время от начала эпохи UNIX (в формате int).
2. МС первой машины отправляет время на МС второй машины.
3. МС второй машины через очередь сообщений передает эту информацию в конвертер, который полученное время преобразовывает в обычное время (ДД:ММ:ГГ ЧЧ:ММ:СС).
4. Конвертор по каналам передает серверу конвертированную строку, которую сервер выводит на экран.
Вариант 3 (Рисование по запросу):
1. Клиент предлагает пользователю набор символов (!»№;%:?*), пользователь вводит номер одного из них.
2. Клиент через очередь сообщений отправляет этот номер МСу.
3. МС первой машины отправляет номер на МС второй машины, который записывает этот номер в разделяемую память.
4. Индексатор считывает из разделяемой памяти номер и отправляет серверу через каналы соответствующий этому номеру символ.
5. Сервер выводит на экран любую геометрическую фигуру этим сиволом.
Вариант 4 (Удаленное управление компьютером. v.2):
1. Клиент выводит запрос на ввод пользователю (‘$ ’), пользователь вводит команду UNIX, и клиент через разделяемую память отправляет команду на МС.
2. МС первой машины отправляет команду на МС второй машины, который:
a. Через очередь сообщений передает команду серверу.
b. Через каналы передает команду серверу.
3. Сервер делает вызов system() с этой командой в аргументе.
Вариант 5 (Передача файлов):
1. Клиент с первой машины спрашивает у пользователя имя файла (пользователь вводит имя файла), которое будет передано через очередь сообщений на модуль сопряжения (МС).
2. МС с первой машины отправляет запрос на передачу файла на МС второй машины, МС 2й машины информирует сервер через каналы о наличии желающего передать файл клиента.
3. Пользователь сообщает серверу имя файла.
4. Сервер передает МСу эту информацию через канал.
5. МС второй машины сообщает МСу первой машины о готовности принять файл.
6. МС с первой машины через сокеты отправляет файл, МС второй машины принимает его, записывая данные о прогрессе в разделяемую память.
7. Сервер считывает данные о прогрессе из разделямой памяти и выводит их на экран.
Вариант 6: Реализовать игру в крестики-нолики, используя следующую схему:
Игроки должны играть на разных компьютерах, сообщающихся через сокеты, взаимодействие МСов и игроков осуществляется при помощи следующих IPC:
1. Очередь сообщений
2. Разделяемая память
3. Семафоры
4. Каналы
Ждём комментариев с указаниями на опечатки)