关闭RPC服务器端点

use*_*421 5 c c++ rpc endpoint

我有一个程序启动具有特定端口的RPC服务器:

  1. RpcServerRegisterIf
  2. RPCServerUseProtSeqEp
  3. 开始听......
  4. RpcUnregisterIf

但是,在调用RPCServerUseProtSeqEp之后,立即将端口分配给进程,并且对此函数的后续调用将返回Duplicate Endpoint.

如何取消注册\关闭此端口?我需要在几个进程中使用这个rpc服务器.

Pet*_*ter -1

你混淆了顺序:

  1. RpcServerUseProtseqEp() // 告诉 RPC 使用哪个协议
  2. RpcServerRegisterIf() // 注册接口
  3. RpcServerListen()

请参阅msdn,RPCServer 应用程序

我希望这个答案还不算太晚

添加 2016 年 8 月 22 日

  1. 要关闭服务器端点,请使用 RpcServerUnregisterIf() 请参阅msdn,停止 RPCServer 应用程序

  2. 再次:您混淆了 api 调用的顺序:首先调用 RpcServerUseProtseqEp() 指定协议,然后调用 RpcServerRegisterIf() 注册服务器,然后调用 RpcServerListen()

  3. RpcServerListen() 正在阻塞调用它的线程。如果您从控制台程序调用它,请使用 ctrl c 结束调用。然后将执行下一行代码,通常是RpcServerUnregisterIf()。如果您从单独的线程(例如在服务中)调用 RpcServerListen(),请在主线程中使用 RpcMgmtStopServerListening() 关闭服务器。