ВУЗ:
Составители:
26
# makefile, фрагмент
server.exe : hellos.obj hellop.obj hello_s.obj
...
hello.h hello_s.c : hello.idl hello.acf
...
hellos.obj : hellos.c hello.h
...
hellop.obj : hellop.c hello.h
...
hello_s.obj : hello_s.c hello.h
...
Остановка серверного приложения
Робастная серверная программа при завершении работы должна остано-
вить прослушивание клиентов и аннулировать регистрацию интерфейса. Для
реализации такой возможности используются две специальные серверные
функции – RpcMgmtStopServerListening и RpcServerUnregisterIf.
Серверная функция RpcServerListen не возвращает вызвавшей программе
управление до тех пор, пока не произойдет исключение или пока сервер не вы -
зовет RpcMgmtStopServerListening. В Microsoft RPC клиент не может не-
посредственно вызывать эту функцию , останавливающую прослушивание.
Можно , однако, разработать программу сервера так , чтобы пользователь мог
управлять ею как сервисом и таким способом заставлял другой поток серверно-
го приложения вызвать RpcMgmtStopServerListening. Другой путь реше-
ния задачи – позволить клиентскому приложению останавливать серверное,
делая удаленный вызов процедуры на сервере, которая в свою очередь вызыва-
ет RpcMgmtStopServerListening. Следующий пример использует послед -
ний из подходов, для чего к HELLOP.C добавлена новая удаленная функция
Shutdown:
/* файл: hellop.c (фрагмент) */
#include "hello.h" // заголовок, сгенерированный
// компилятором MIDL
void Shutdown(void)
{
RPC_STATUS status;
status = RpcMgmtStopServerListening(NULL);
...
status = RpcServerUnregisterIf(NULL, NULL, FALSE);
...
}
26 # makefile, фрагмент server.exe : hellos.obj hellop.obj hello_s.obj ... hello.h hello_s.c : hello.idl hello.acf ... hellos.obj : hellos.c hello.h ... hellop.obj : hellop.c hello.h ... hello_s.obj : hello_s.c hello.h ... Остановка серверного приложения Робастная серверная программа при завершении работы должна остано- вить прослушивание клиентов и аннулировать регистрацию интерфейса. Для реализации такой возможности используются две специальные серверные функции – RpcMgmtStopServerListening и RpcServerUnregisterIf . Серверная функция RpcServerListen не возвращает вызвавшей программе управление до тех пор, пока не произойдет исключение или пока сервер не вы- зовет RpcMgmtStopServerListening . В Microsoft RPC клиент не может не- посредственно вызывать эту функцию, останавливающую прослушивание. Можно, однако, разработать программу сервера так, чтобы пользователь мог управлять ею как сервисом и таким способом заставлял другой поток серверно- го приложения вызвать RpcMgmtStopServerListening . Другой путь реше- ния задачи – позволить клиентскому приложению останавливать серверное, делая удаленный вызов процедуры на сервере, которая в свою очередь вызыва- ет RpcMgmtStopServerListening . Следующий пример использует послед- ний из подходов, для чего к HELLOP.C добавлена новая удаленная функция Shutdown : /* файл: hellop.c (фрагмент) */ #include "hello.h" // заголовок, сгенерированный // компилятором MIDL void Shutdown(void) { RPC_STATUS status; status = RpcMgmtStopServerListening(NULL); ... status = RpcServerUnregisterIf(NULL, NULL, FALSE); ... }
Страницы
- « первая
- ‹ предыдущая
- …
- 24
- 25
- 26
- 27
- 28
- …
- следующая ›
- последняя »