我试图了解使用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的一些用例是速度较慢的计算机上的瘦客户端,这需要一些昂贵的计算。客户端将数据发送到功能强大的服务器,服务器会进行艰苦的工作并返回结果。

09-28 11:44