HarmonyOS IPC Kit进阶:客户端与服务端的基础通信

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。

本文将深入探讨如何使用 IPC Kit 实现客户端 (Client) 与服务端 (Server) 之间的基础通信,并解析 Proxy 和 Stub 在通信过程中的角色。

客户端与服务端通信流程

  1. 服务端注册能力:Server 端首先需要将自身能力 (System Ability) 注册到系统能力管理者 (SAMgr) 中。
  2. 客户端获取 Proxy:Client 端从 SAMgr 获取对应能力的 Proxy 对象。
  3. 客户端发送请求:Client 端通过 Proxy 对象向 Server 端发送请求。
  4. 服务端处理请求:Server 端的 Stub 对象接收并处理 Client 端的请求。
  5. 服务端返回结果:Server 端将处理结果返回给 Client 端。
  6. 客户端接收结果:Client 端接收 Server 端返回的结果。

Proxy 和 Stub 的角色

  • Proxy:Client 端的代理对象,用于转发 Client 的请求到 Server 端。Proxy 对象具有与 Server 端相同的方法接口,Client 端通过调用 Proxy 对象的方法来发送请求。
  • Stub:Server 端的代理对象,用于接收 Client 端的请求并调用 Server 的方法。Stub 对象实现了 Server 端的方法接口,并负责处理 Client 端的请求。

IPC Client 代理与服务端 Stub 的实现

  1. 服务端
  • 创建 OHIPCRemoteStub 对象。
  • 实现服务端的方法,并在 OnRemoteRequest 回调函数中处理 Client 端的请求。
  • 将服务注册到 SAMgr。
  1. 客户端
  • 获取对应能力的 Proxy 对象。
  • 通过 Proxy 对象发送请求。
  • 接收 Server 端返回的结果。

使用 IPC Kit 创建远程 Proxy 和 Stub

// 服务端
OHIPCRemoteStub *stub = OH_IPCRemoteStub_Create("com.example.service", &MyService::OnRemoteRequest, nullptr, this);
OH_IPCRemoteStub_RegisterSystemAbility(stub, MY_SERVICE_ID);
// 客户端
OHIPCRemoteProxy *proxy = OH_IPCRemoteProxy_Create(MY_SERVICE_ID, 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值