我正在尝试使用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并通过运行myrpc_server启动服务器。现在当我运行客户端'myrpc_client'时,我在服务器中打印了以下消息
Message is: H���5�
现在我的问题是这个论点来自“H 5 ”,因为这不是我在运行客户端时的论据?也有人可以解释我如何开始用rpcgen运行复杂的程序?
答案 0 :(得分:1)
垃圾值来自client.c中第15行的代码,其中未初始化的变量用作rpc调用的参数。我的rpc版本显示错误:
调用失败:RPC:不能编码参数"
15 char * evalmessage_1_arg;
"如何使用rpc开始运行复杂的程序?"它'就在你身上我们不能说什么时候需要使用rpc。您可能有一些理由选择此实现。
rpc的一些用例是慢速计算机上的瘦客户端,需要一些昂贵的计算。客户端将数据发送到功能强大的服务器,执行繁重的工作并返回结果。