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);