Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Разработка клиента



Перед вызовом процедуры на отдаленном сервере в коде клиента необходимо получить клиентский дескриптор, который будет использован дальше для вызова сохраненных процедур из сервера. Этот дескриптор является указателем на специальную структуру CLIENT. Для его получения используют функцию clnt_create()

#include <rpc/rpc.h>

CLIENT *clnt_create(const char *host, unsigned long pnum.

unsigned long ver. const char *protocol);

где: host - имя или IP-адрес отдаленного хоста;

pnum - номер приложения (в заглавном файле, згенерованому rpcgen, для него определяют соответствующую константу, например HELL0PR0G);

ver — номер версии (для него определяют аналогичную константу, например HELL0JER);

protocol — строка с названием протокола ("tcp", "udp").

Заглавный файл <rpc/rpc.h> будет автоматически подключен в myrpc.h, потому явно подключать его не обязательно.

#include "myrpc.h"

CLIENT *cl:

сl = clnt_create("myserver". HELL0_PR0G. HELLOJER. "tcp"):

По получении клиентского дескриптора можно вызывать отдаленную процедуру. Для этого вызывают процедуру имя_номер_версии(): для процедуры say-hello() нужно вызывать sayhello_1(). Все аргументы передают в эту функцию как указатели, последним аргументом дополнительно задают клиентский дескриптор.

struct rasg hello = { "hello world" };

void *res = sayhello_1(&hello. cl);

Вызов отдаленной процедуры может вернуть NULL: это значит, что произошла ошибка. Строку с информацией об ошибке в этом случае возвращает функция clnt_sperror(), которая первым параметром принимает клиентский дескриптор, а вторым — имя отдаленного хоста:

if (res == NULL)

printf("Ошибка: %s\n". clnt_sperror(cl. "myserver"));





Дата публикования: 2015-04-07; Прочитано: 228 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...