RPC 编程(二)

这部分基本和上一节一样,不过上一节中 RPC 是通过 Named Pipe 调用的,这里我们再试一下 TCP 的方式。 代码大部分都是相同的, IDL 接口不用变(无论是通过什么方式 RPC,接口都是与之无关的)。 服务端要换成 TCP 的方式: --------------------------------- int main(int argc,char * argv[]) {      // 用TCP 方式作为RPC 的通道。绑定端口13521。      RpcServerUseProtseqEp(          (unsigned char *)"ncacn_ip_tcp",          RPC_C_PROTSEQ_MAX_REQS_DEFAULT,          (unsigned char *)"13521",          NULL);          // 注意:从Windows XP SP2 开始,增强了安全性的要求,如果用 RpcServerRegisterIf() 注册      // 接口,客户端调用时会出现 RpcExceptionCode() == 5,即Access Denied 的错误. 因此,必      // 须用 RpcServerRegisterIfEx 带 RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 标志允许客户端直      // 接调用。      // RpcServerRegisterIf(HelloWorld_v1_0_s_ifspec, NULL, NULL);      RpcServerRegisterIfEx(          HelloWorld_v1_0_s_ifspec, // Interface to register.          NULL,          NULL, // Use the MIDL generated entry-point vector.          RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH,          0,          NULL);        // 后面都相同        ...      return 0; }   客户端的调用方式也要换: --------------------------------- int main(int argc, char * argv[]) {      // 前面都相同      ...          // 用 TCP 方式作为 RPC 的通道。服务器端口 13521。第3个      // 参数 NetworkAddr 如果取 NULL,那么就是连接本机服务,      // 也可以取IP, 域名, servername 等      RpcStringBindingCompose(          NULL,          (unsigned char*)"ncacn_ip_tcp",          (unsigned char*)"localhost" /*NULL*/,          (unsigned char*)"13521",          NULL,          &pszStringBinding      );          // 后面都相同      ... } 别的地方都是一样的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值