Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Судаков / Лекции / lec21_net.ppt
Скачиваний:
27
Добавлен:
20.03.2015
Размер:
103.42 Кб
Скачать

Extended data representation

Сериализация данных

Независимость от аппаратной платформы и операционной системы

Предоставляются функции для стандартных типов данных

xdr_int – для целочисленных типов

xdr_opaque – для произвольного массива байт

xdr_string – для строки символов

Использование компилятора RPCGEN

Создание описания интерфейсов

Компиляция описания интерфейсов

Создаются файлы клиентов и серверов на языке С

Создание тела удаленных процедур

Создание клиентских вызовов

Компиляция клиента и сервера

Пример описания интерфейсов

program TESTPROG { version TESTVER {

string PRINT (string) =

1;

}= 1;

}= 0x22222222;

[saa@cluster rpc]$ rpcgen test.x [saa@cluster rpc]$ ls

test.h test_svc.c test_clnt.c test.x

Создание тела процедуры

#include "test.h" #include <stdio.h>

char* responce = "HI! client";

char** print_1_svc(char** arg,struct svc_req * r){ printf("client sent: %s\n",*arg);

return &responce;

}

Создание клиента

#include "test.h" #include <stdio.h>

int main (int argc, char* argv[]){ CLIENT* cl;

char** responce;

cl = clnt_create(argv[1],TESTPROG,TESTVER,"tcp"); if(!cl) {

clnt_pcreateerror(""); return -1;

}

responce = print_1(&argv[2],cl); if(!responce) {

clnt_perror(cl,""); return -1;

}

printf("Server respond with %s\n",*responce); return 0;

}

Компиляция клиента и сервера

[saa@cluster rpc]$ gcc ./print_client.c test_clnt.c -o client

[saa@cluster rpc]$ gcc ./test_svc.c test_print.c -o server

Пример работы

Клиент:

[saa@cluster rpc]$ ./client cluster "Hi server" Server respond with HI! Client

Сервер:

[saa@cluster rpc]$ ./server client sent: Hi server

CORBA

Надстройка над сокетами

Объектно-ориентированные RPC

Упрощается создание распределенных объектно-ориентированных приложений

Процесс создания распределенной программы

Создается описание интерфейсов

Описание интерфейсов компилируется в язык высокого уровня

Создается тело функции сервера

Создается сервер

Создается клиент

Пример – описание интерфейса

module TestModule

{

interface TestInterface

{

string print(in string mes);

};

};

[saa@cluster 1]$ orbit-idl-2 --skeleton-impl test.idl orbit-idl-2 2.8.2 compiling

mode, show preprocessor errors, passes: stubs skels common headers imodule

[saa@cluster 1]$ ls

test-common.c test.h test.idl test-skelimpl.c test-skels.c test-stubs.c [saa@cluster 1]$

Соседние файлы в папке Лекции