rpc 编程(搞了好久查了好多资料)希望对大家有用

本文详细介绍了RPC(远程过程调用)编程的过程,包括Server端的接口注册、创建绑定信息、服务程序登记和端点注册。同时提供了一个完整的RPC IDL文件及Server和Client端的示例代码,涉及字符串传递、结构体操作以及上下文句柄的使用,有助于理解RPC的工作原理。
摘要由CSDN通过智能技术生成

RPC总结

Server

                             

1.  注册接口

注册一个服务程序所支持的接口是为了使客户程序能够找到服务程序在那个服务器诉诸计算机上运行,服务程序调用RpcServerRegisterIf来注册他们的接口。下面的代码片断演示了它的作用:

2.  创建绑定信息

为了注册一个端点,并向名字服务数据库宣布自己的存在,服务程序必须创建绑定信息。

绑定使用的一个安全描述符。

           如果想使用应用程序只使用一个协议序列调用:RpcServerUseProseqRpcServerUseProtseqExRpcServerUseProseEpRpcServerUseProtseqEpEx

           在选定至少一个协议序列以后,服务程序必须为它使用的每一个协议序列创建绑定信息。他将绑定信息存储在一个绑定句柄中,如果服务程序使用不止一个协议序列,它必须创建多个绑定句柄。一系列的绑定句柄叫做绑定向量。

           以下的代码段显示的是如何使用RpcServerInqBindings函数为服务应用程序获得一个绑定向量:

RPC_STATUS status;

RPC_BINDING_VECTOR *rpcBindingVector;

 

Status  =RpcServeringBindings(&rpcBindingVector);

3.  登记服务程序

RPC_STATUS status;

/*RPC_STATUS RPC_ENTRY RpcNsBindingExport(

  unsigned long EntryNameSyntax,

  unsigned char* EntryName,

  RPC_IF_HANDLE IfSpec,

  RPC_BINDING_VECTOR*BindingVec,

  UUID_VECTOR* ObjectUuidVec

);*/

Status = RpcNsBindingExport(

RPC_C_NS_SYNTAX_DEFAULT,

/.:/servers/our_dept/iface_aserver,

MyInterface_v1_0_s_ifspec,

rpcBindingVector,

NULL);

RpcNsBindingExport函数的第一个参数用来指定第二个参数(EntryName)的语法,目前,微软RPC之支持一种名字服务语法,因此,应用程序因该将第一个参数的值设为RPC_C_NS_SYNTAX_DEFAULT.

           第四个参数是一个指向绑定向量的指针,这个绑定向量是服务程序从RpcServeringbindings函数中获得的。

           除了从名字服务数据库中导出绑定句柄以外,您还可以导出对象UUID,在这个例子中,只导出了绑定句柄,因此,RpcNsBindingExport函数的最后一个参数被设定为NULL

4.  注册端点

在服务器宿主计算机的端点因射中注册服务程序,使客户程序可以确定服务程序侦听的是哪个端点(通常是一个TCP/IP端口或是一个有名管道),为了在服务器诉诸计算机的端点映射中注册自己,服务程序需要调用RpcEpRegister函数,如下面的程序代码片断所示:

RPC_STATUS status;

Status = RpcEpRegister(

MyInterface_V1_0_s_ifspec,

rpcBindingVector,NULL,

NULL);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值