我有一个使用特定端口启动 RPC 服务器的程序:
- RpcServerRegisterIf
- RPCServerUseProtSeqEp
- 开始听...
- RpcUnregisterIf
但是,在调用 RPCServerUseProtSeqEp 后,端口立即分配给进程,随后对该函数的调用返回 Duplicate Endpoint。
如何取消注册\关闭此端口?我需要在几个进程中使用这个 rpc 服务器。
您混淆了顺序:
我希望这个答案不会太晚
添加 2016 年 8 月 22 日
要关闭服务器端点,请使用 RpcServerUnregisterIf() 请参阅msdn,停止 RPCServer 应用程序
再次:您混淆了 api 调用的顺序:首先调用 RpcServerUseProtseqEp() 来指定协议,然后调用 RpcServerRegisterIf() 来注册服务器,然后调用 RpcServerListen()
RpcServerListen() 正在阻塞调用它的线程。如果您从控制台程序调用它,请使用 ctrl c 结束调用。然后将执行下一行代码,通常是 RpcServerUnregisterIf()。如果您从 nseperate 线程(例如在服务中)调用 RpcServerListen(),请在主线程中使用 RpcMgmtStopServerListening() 关闭服务器。