Владимирский государственный университет. ВлГУ
Факультет прикладной математики и физики. ФПМФ
Лабораторные работы по предмету "Современные компьютерные технологии"
Выполнил студент группы: ПМИм-115
Ковалев Владимир Евгеньевич (Вариант 1)
#####Задание:
Разработать консольное приложение, реализующее технологию клиент-сервер с помощью сокетов. Клиентская часть должна считывать строку с клавиатуры и передавать на сервер. Серверная часть – ожидать подключение клиентов, открывать соединение и выводить на экран адрес клиента и принятую строку. Адрес сервера передается программе в качестве параметра.
#####Запустить клиент:
lab1.exe -c <IP адрес сервера> <порт>
Пример: lab1.exe -с 127.0.0.1 10001
#####Запустить сервер:
lab1.exe -s <порт>
Пример: lab1.exe -s 10001
#####Результат:
#####Задание:
На основе лабораторной работы №1 создать прототип распределенной системы, взаимодействующей посредством вызовов удаленных процедур (RPC). Механизм RPC использует сокеты TCP/IP в качестве транспортного слоя.
#####Состав модулей:
Серверная часть: реализует набор процедур. Процедуры – простейшие арифметические действия над целыми числами:
- сложение: int add (int a, int b);
- вычитание: int sub (int a, int b);
- умножение: int mul (int a, int b).
Клиентская часть: запрашивает 2 аргумента с клавиатуры, производит вызов RPC и отображает результат на экране.
Переходники (клиентский, серверный): реализуют механизм RPC при помощи сокетов.
Клиентский переходник представляет собой функцию ClientStub с тремя параметрами (код, аргумент1, аргумент2), которая:
- создает клиентский сокет,
- производит подключение к серверу (адрес сервера задать любым удобным способом)
- передает пакет данных (код функции [+,-,*], аргумент1, аргумент2)
- считывает результат из сокета
- возвращает результат.
Серверный переходник представляет собой функцию ServerStub без параметров, которая:
- создает серверный сокет
- при подключении клиента считывает пакет данных
- вызывает соответствующую функцию по коду, передавая ей аргументы.
- записывает результат в сокет.
Кроме этого, клиентская часть содержит прокси-функции add, del и mul, которые выполняют RPC, вызывая клиентский переходник ClientStub.
Готовый прототип системы должен состоять из 2-х приложений: клиентского и серверного. Общая схема взаимодействия показана на рисунке.
#####Запустить клиент:
lab2.exe -c <IP адрес сервера> <порт>
Пример: lab2.exe -с 127.0.0.1 10001
#####Запустить сервер:
lab2.exe -s <порт>
Пример: lab2.exe -s 10001
#####Результат:
#####Задание:
Имеется P2P-система, предоставляющая пользователям доступ к некоторому множеству документов. Документы могут регистрироваться и редактироваться независимо на каждом узле системы. Требуется осуществить синхронизацию («репликацию») наборов документов между узлами. Работа выполняется по вариантам:
- Вариант 1 (нечетные номера по алфавитному списку группы). Синхронизация реализуется на основе Push-модели.
- Вариант 2 (четные номера по алфавитному списку группы). Синхронизация реализуется на основе Pull-модели.
e-mail: kovalew.vladimir@gmail.com