Compartir a través de


Detener la aplicación de servidor

Una aplicación de servidor puede dejar de escuchar clientes mediante una llamada a RpcMgmtStopServerListening y RpcServerUnregisterIf, o simplemente salir del proceso de host. Ambos métodos son aceptables. Si el servidor sigue el primer enfoque, debe implementar los pasos siguientes:

La función de servidor RpcServerListen no vuelve al programa que realiza la llamada hasta que se produce una excepción o hasta que se produce una llamada a RpcMgmtStopServerListening . De forma predeterminada, solo se permite que otro subproceso de servidor detenga el servidor RPC mediante RpcMgmtStopServerListening. Los clientes que intentan detener el servidor recibirán el error RPC_S_ACCESS_DENIED. Sin embargo, es posible configurar RPC para permitir que algunos o todos los clientes detengan el servidor. Consulte RpcMgmtStopServerListening para obtener más información.

También puede hacer que la aplicación cliente realice una llamada a procedimiento remoto a una rutina de apagado en el servidor. La rutina de apagado llama a RpcMgmtStopServerListening y RpcServerUnregisterIf. En esta aplicación de programa de ejemplo de tutorial se usa este enfoque agregando una nueva función remota, Shutdown, al archivo Hellop.c.

En la función Shutdown , el único parámetro NULL de RpcMgmtStopServerListening indica que la aplicación local debe dejar de escuchar las llamadas a procedimientos remotos. Los dos parámetros NULL de RpcServerUnregisterIf son caracteres comodín, lo que indica que se deben anular el registro de todas las interfaces. El parámetro FALSE indica que la interfaz debe quitarse del registro inmediatamente, en lugar de esperar a que se completen las llamadas pendientes.

/* add this function to hellop.c */
void Shutdown(void)
{
    RPC_STATUS status;
 
    status = RpcMgmtStopServerListening(NULL);
 
    if (status) 
    {
       exit(status);
    }
 
    status = RpcServerUnregisterIf(NULL, NULL, FALSE);
 
    if (status) 
    {
       exit(status);
    }
} //end Shutdown