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

Создание тела функции (test- skelimpl.c)

static CORBA_string

impl_TestModule_TestInterface_print(impl_POA_test_test * servant,

const CORBA_char * mes, CORBA_Environment

* ev)

{

CORBA_string retval;

/*

------ insert method code here

------ */

 

printf("client sent: %s\n",mes);

 

 

retval = CORBA_string_alloc(512);

 

 

sprintf (retval,"Hi client");

 

/* ------

---------- end ------------

------ */

return retval;

}

Создание сервера

Инициализация библиотеки CORBA

Создание ORB

Создание адаптера объектов

Создание объектов

Активизация сервера

Получение ссылок на объект

Запуск сервера

Пример сервера (test- skelimpl.c)

int main (int argc, char* argv[]){ PortableServer_POA poa;

TestModule_TestInterface server = CORBA_OBJECT_NIL; CORBA_ORB orb = CORBA_OBJECT_NIL; CORBA_Environment ev;

gchar *objref=NULL;

CORBA_char filename[] = "test_service.ior"; FILE* file = NULL;

CORBA_exception_init(&ev); orb=CORBA_ORB_init(&argc,argv,"orbit-local-orb",&ev);

poa= (PortableServer_POA) CORBA_ORB_resolve_initial_references(orb,"RootPOA",&ev); server = impl_TestModule_TestInterface__create (poa, &ev); PortableServer_POAManager_activate(PortableServer_POA__get_the_POAManager(poa, &ev),&ev); objref= CORBA_ORB_object_to_string (orb, server, &ev);

if ((file=fopen(filename, "w"))==NULL)

g_error ("could not open '%s'\n", filename); fprintf(file, "%s",objref);

fclose (file); free(objref);

CORBA_ORB_run(orb,&ev); CORBA_Object_release(server,&ev); CORBA_ORB_shutdown(orb,CORBA_FALSE,&ev); return 0;

}

Создание клиента (test_client.c)

Инициализация библиотеки CORBA

Инициализация брокера

Получение ссылки на объект

Вызов функций

Пример клиента

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

int main(int argc, char* argv[]){ CORBA_ORB orb=CORBA_OBJECT_NIL; CORBA_Environment ev;

TestModule_TestInterface service = CORBA_OBJECT_NIL; CORBA_char filename[]="test_service.ior";

CORBA_exception_init(&ev); orb=CORBA_ORB_init(&argc,argv,"orbit-local-orb",&ev);

FILE *file = NULL;

if ((file=fopen(filename, "r"))==NULL)

g_error ("could not open %s\n", filename); gchar *objref=NULL;

fscanf (file, "%as", &objref);

service = (TestModule_TestInterface) CORBA_ORB_string_to_object (orb, objref,

&ev);

free (objref);

char* mes = TestModule_TestInterface_print(service,argv[1],&ev) ; printf("server sent: %s\n",mes);

return 0;

}

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

[saa@cluster 1]$ gcc `orbit2-config --cflags` `orbit2-config --libs` test-stubs.c test_client.c test-skels.c test-common.c -o client

[saa@cluster 1]$ gcc `orbit2-config --cflags` `orbit2-config --libs` test-skelimpl.c test- skels.c test-common.c -o server

Запуск клиента и сервера

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

[saa@cluster 1]$ ./client 'Hi server!' server sent: Hi client

Вопросы

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