закрытие конечной точки сервера RPC

У меня есть программа, которая запускает сервер RPC с определенным портом:

  1. RpcServerRegisterIf
  2. RPCServerUseProtSeqEp
  3. начать слушать …
  4. RpcUnregisterIf

Однако сразу после вызова RPCServerUseProtSeqEp порт назначается процессу, и последующие вызовы этой функции возвращают Duplicate Endpoint.

Как я могу отменить регистрацию \ закрыть этот порт? Мне нужно использовать этот сервер RPC в нескольких процессах.

5

Решение

Вы перепутали заказ:

  1. RpcServerUseProtseqEp () // сообщает RPC, какой протокол использовать
  2. RpcServerRegisterIf () // зарегистрировать интерфейс
  3. RpcServerListen ()

увидеть msdn, RPCServer Application

Я надеюсь, что этот ответ не слишком поздно

добавить 22.08.2016

  1. Чтобы закрыть конечную точку сервера, используйте
    RpcServerUnregisterIf ()
    увидеть msdn, остановка приложения RPCServer

  2. еще раз: вы перепутали порядок вызовов API: сначала вызовите RpcServerUseProtseqEp (), чтобы указать протокол, затем RpcServerRegisterIf (), чтобы зарегистрировать сервер, а затем RpcServerListen ().

  3. RpcServerListen () блокирует поток, из которого он вызывается. Если вы вызываете его из консольной программы, используйте ctrl c, чтобы завершить вызов. Затем будет выполнена следующая строка кода, которая обычно будет RpcServerUnregisterIf (). Если вы вызвали RpcServerListen () из отдельного потока, например, в службе, завершите работу сервера с помощью RpcMgmtStopServerListening () в главном потоке.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector