【问题标题】:RPC Client gives Can't encode argumentsRPC 客户端给出不能编码参数
【发布时间】:2016-02-17 08:49:15
【问题描述】:

我正在尝试使用以下代码在 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 添加了&amp;in&amp;out 以避免分段错误错误。

【问题讨论】:

    标签: c rpc


    【解决方案1】:

    您缺少一些括号:

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

    被评估为

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

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

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

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

    clnt_perrno(stat);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2016-09-15
      • 1970-01-01
      相关资源
      最近更新 更多