RPC客户端给出无法编码参数

我正在尝试使用以下代码在RPC中编写最简单的客户端:

#include  #include  #include  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:不能编码参数”

编辑:实际上服务器没有收到任何参数,也没有发回任何东西,这就是为什么我把xdr_void添加&in&out以避免分段错误错误。

你遗漏了一些括号:

 if (stat = callrpc(...) != 0) 

被评估为

 if (stat = (callrpc(...) != 0)) 

如果出现错误,它总是将1分配给stat ,即RPC_CANTENCODEARGS 。 你需要

 if ((stat = callrpc(...)) != 0) 

获取真正的错误代码和打印的消息

 clnt_perrno(stat);