Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Уровня RPC

Удаленный вызов процедур

Действия с сокетами

Установка связи:

Со стороны клиента связь устанавливается с помощью стандартной функции connect, которая инициирует установление связи на сокете, используя дескриптор сокета s и информацию из структуры serveraddr, имеющей тип sockaddr_in, которая содержит адрес сервера и номер порта на который надо установить связь:

error = connect(s, serveraddr, serveraddrlen);

Со стороны сервера процесс установления связи сложнее. Для этих целей используется системный вызов listen:

error = listen(s, qlength);

где s это дескриптор сокета, а qlength это максимальное количество запросов на установление связи, которые могут стоять в очереди.

Передача данных:

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

write(s, buf, sizeof(buf)); read(s, buf, sizeof(buf));

Вызовы send и recv практически идентичны read и write, за исключением того, что добавляется аргумент флагов.

send(s, buf, sizeof(buf), flags); recv(s, buf, sizeof(buf), flags);

Закрывание сокетов:

Если сокет больше не используется, процесс может закрыть его с помощью функции close, вызвав ее с соответствующим дескриптором сокета:

close(s);

Вызова удаленных процедур (Remote Procedure Call - RPC) - механизм передачи управления и данных внутри программы, выполняющейся на одной машине, на передачу управления и данных через сеть. Алгоритм: клиент производит вызов процедуры, посылая пакет данных на сервер. Средства удаленного вызова процедур предназначены для облегчения организации распределенных вычислений.

Ключевые моменты (отличия от вызовов локальных процедур):

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

2) Значения параметров должны копироваться с одного компьютера на другой.

3) В реализации RPC участвуют как минимум два процесса - по одному в каждой машине. В случае, если один из них аварийно завершится, могут возникнуть неприятные ситуации.

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

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

- средний(inter medium), настоящий RPC с одной стороны программист сам определяет удаленную процедуру, организует кодировку передаваемых данных. С другой стороны не работает напрямую с сокетами.

- нижний(low), редко используется, позволяет детально программировать взаимодействия по RPC.

Взаимодействие программных компонентов при выполнении удаленного вызова процедуры иллюстрируется рисунком.

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

 

<== предыдущая лекция | следующая лекция ==>
Простой | Архитектуры многопроцессорных систем
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 304; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.