RPC 客户端给出无法编码参数
RPC Client gives Can't encode arguments
我正在尝试使用以下代码在 RPC 中编写最简单的客户端:
#include <stdio.h>
#include <stdlib.h>
#include <rpc/rpc.h>
int main(int argc, char *argv[]){
int stat;
char out;
char in='f';
if(stat=callrpc(argv[1],0x20000001, 1, 1, (xdrproc_t)xdr_void, &in, (xdrproc_t)xdr_char, &out)!=0){
clnt_perrno(stat);
exit(1);
}
exit(0);
}
它可以编译,但是当我尝试 运行 它时,它给了我一个 "RPC: Can't encode arguments"
编辑:实际上服务器没有收到任何参数,也没有发回任何东西,这就是为什么我添加了 xdr_void
和 &in
和 &out
以避免分段错误。
您缺少一些括号:
if (stat = callrpc(...) != 0)
被评估为
if (stat = (callrpc(...) != 0))
总是将 1
分配给 stat
,以防出现错误,即 RPC_CANTENCODEARGS
。你需要
if ((stat = callrpc(...)) != 0)
获取打印在
中的真实错误代码和消息
clnt_perrno(stat);
我正在尝试使用以下代码在 RPC 中编写最简单的客户端:
#include <stdio.h>
#include <stdlib.h>
#include <rpc/rpc.h>
int main(int argc, char *argv[]){
int stat;
char out;
char in='f';
if(stat=callrpc(argv[1],0x20000001, 1, 1, (xdrproc_t)xdr_void, &in, (xdrproc_t)xdr_char, &out)!=0){
clnt_perrno(stat);
exit(1);
}
exit(0);
}
它可以编译,但是当我尝试 运行 它时,它给了我一个 "RPC: Can't encode arguments"
编辑:实际上服务器没有收到任何参数,也没有发回任何东西,这就是为什么我添加了 xdr_void
和 &in
和 &out
以避免分段错误。
您缺少一些括号:
if (stat = callrpc(...) != 0)
被评估为
if (stat = (callrpc(...) != 0))
总是将 1
分配给 stat
,以防出现错误,即 RPC_CANTENCODEARGS
。你需要
if ((stat = callrpc(...)) != 0)
获取打印在
中的真实错误代码和消息clnt_perrno(stat);