zoukankan      html  css  js  c++  java
  • IPC和RPC

    IPC是进程间通信。

    RPC是远程调用,远程调用需要借助于进程间通信。

    远程调用的概念相对于本地调用。

    本地调用时程序会被装载到内存中,然后通过内存寻址进行调用。

    但是远程函数不在内存中该怎么调用呢?

    这就需要使用进程间通信将调用信息发送到远端,然后远端在维护列表中查找目标函数。

    **Client端 **
    // Student student = Call(ServerAddr, addAge, student)

    1. 将这个调用映射为Call ID。
    2. 将Call ID,student(params)序列化,以二进制形式打包
    3. 把2中得到的数据包发送给ServerAddr,这需要使用网络传输层
    4. 等待服务器返回结果
    5. 如果服务器调用成功,那么就将结果反序列化,并赋给student,年龄更新

    ** Server端**

    1. 在本地维护一个Call ID到函数指针的映射call_id_map,可以用Map<String, Method> callIdMap
    2. 等待服务端请求
    3. 得到一个请求后,将其数据包反序列化,得到Call ID
    4. 通过在callIdMap中查找,得到相应的函数指针
    5. 将student(params)反序列化后,在本地调用addAge()函数,得到结果
    6. 将student结果序列化后通过网络返回给Client

    参考链接:https://www.jianshu.com/p/7d6853140e13

  • 相关阅读:
    OC-KVO简介
    注册审核
    应用权限
    关于函数执行的一点知识
    设置权限
    文件操作实例:文件管理器(网页版)
    文件操作
    正则表达式
    全局变量和递归
    案例:简单留言板
  • 原文地址:https://www.cnblogs.com/chendeqiang/p/13184908.html
Copyright © 2011-2022 走看看