Получение дескриптора клиента
11 Мы вызываем функцию clnt_create, создающую клиент RPC:
#include
CLIENT *clnt_create(const char *host, unsigned long prognum, unsigned long versnum, const char *protocol);
/* Возвращает ненулевой дескриптор клиента в случае успешного завершения. NULL – в случае ошибки */
Как и с обычными указателями на тип FILE, нам безразлично, на что указывает дескриптор клиента. Скорее всего, это некоторая информационная структура, хранящаяся в ядре. Функция clnt_create создает такую структуру и возвращает нам указатель на нее, а мы передаем его библиотеке RPC времени выполнения каждый раз при удаленном вызове процедуры.
Первым аргументом clnt_create должно быть имя или IP-адрес узла, на котором выполняется сервер. Вторым аргументом будет имя программы, третьим — номер версии. Оба эти значения берутся из спецификации (square.х, листинг 16.1). Последний аргумент позволяет указать протокол, обычно TCP или UDP.