RPC客户端提供无法编码参数

时间:2016-02-17 08:49:15

标签: c rpc

我正在尝试使用以下代码在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:无法编码参数”

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

1 个答案:

答案 0 :(得分:1)

你遗漏了一些括号:

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

评估为

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

如果出现错误1,则始终将stat分配给RPC_CANTENCODEARGS。你需要

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

获取

中打印的真实错误代码和消息
clnt_perrno(stat);