使用 RPCGen 理解 RPC

Using RPCGen to understand RPC

我正在尝试使用 RPCGen 了解 RPC 的基础知识。我按照基本教程编写了以下 myrpc.x 文件

program MESSAGEPROG {
    version EVALMESSAGEVERS {
        int EVALMESSAGE(string) = 1;
    } = 1;
} = 0x20000002;

我编译运行宁

rpcgen -a -C myrpc.x

在生成的 server.c 文件中,我添加了如下的 printf 语句

printf("Message is: %s,\n", *argp);       

然后我运行 make -f Makefile.myrpc 并通过运行ning myrpc_server 启动服务器。现在,当我 运行 客户端 'myrpc_client' 时,我在服务器

中打印了以下消息
Message is: H���5�

现在我的问题是这个论点来自哪里 "H���5�" 因为这不是我在 运行 客户时的论点?也有人可以向我解释如何使用 rpcgen 启动 运行ning 复杂程序吗?

垃圾值来自 client.c 中第 15 行的代码,其中未初始化的变量用作 rpc 调用的参数。我的 rpc 版本显示错误:

call failed: RPC: Can't encode arguments"

15     char * evalmessage_1_arg;

"How do I start running complex programs with rpc?" 就在你身上。我们不能说什么时候需要使用 rpc。您可能出于某种原因选择了此实现。

rpc 的一些用例是慢速计算机上的瘦客户端,这需要一些昂贵的计算。客户端将数据发送到功能强大的服务器,服务器会进行艰苦的工作并 returns 结果。