Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
В коде сервера в первую очередь нужно указать библиотеке поддержки RPC, какой протокол собирается использовать сервер и как идентифицировать сервер в соответствии с этим протоколом (какая его конечная точка - endpoint).
RPC_STATUS RPC_ENTRY RpcServerUseProtseqEp(unsigned char *prot.
unsigned int max_calls, unsigned char *endpoint, void *sec_desc);
где: prot - строка, которая определяет протокол ("ncacn_ip_tcp" - TCP/IP, "ncacn_np" -поіменовані каналы);
max_calls — максимальное количество соединений с сервером (значения по умолчанию задают как RPC_C_LISTEN_MAX_CALLS_DEFAULT);
endpoi nt — строка, которая определяет конечную точку (для TCP/IP он задает порт, для поименованных каналов — имя канала).
Эта функция возвращает статус RPC-вызова; если он равняется 0 (RPCS0K) — вызов завершился успешно. Аналогичный код возвращают и другие RPC-функции.
// сервер использует TCP/IP. прослушивает порт 5000
RpcServerUseProtseqEp("ncacn_ip_tcp". 5. "5000", NULL);
После задання протокола необходимо зарегистрировать интерфейсы в библиотеке поддержки RPC для того, чтобы клиенты могли его находить:
// для каждого интерфейса из IDL-файла
RpcServerRegisterIf(ihello_v1_0_s_ifspec. NULL. NULL);
Первым параметром задают структуру определения интерфейса, которую генерирует rnidl.
Имя такой структуры строят на основании имени интерфейса и его версии: имя_v1_0_s_іfspec.
Теперь клиенты смогут найти сервер, и можно перейти в режим ожидания соединений:
// ожидание соединений от клиентов
RpcServerListen(1, 5. FALSE);
Перед завершением работы сервер должен упразднить регистрацию своих интерфейсов в библиотеке поддержки
RpcServerUnregisterlf(NULL. NULL. FALSE);
Дата публикования: 2015-04-07; Прочитано: 243 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!