我试图了解使用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运行复杂程序吗?
最佳答案
垃圾值来自client.c中第15行的代码,其中的未初始化变量用作rpc调用的参数。我的rpc版本显示错误:
调用失败:RPC:无法编码参数”
15 char * evalmessage_1_arg;
“如何开始使用rpc运行复杂的程序?”就在你身上。我们无法确定您何时需要使用rpc。您选择此实现的原因可能有一些原因。
rpc的一些用例是速度较慢的计算机上的瘦客户端,这需要一些昂贵的计算。客户端将数据发送到功能强大的服务器,服务器会进行艰苦的工作并返回结果。