调用失败:RPC:无法编码参数

时间:2018-03-02 17:52:37

标签: c segmentation-fault rpc

我正在创建一个非常简单的RPC。客户端在char数组中发送图像。服务器只需获取图像中的每个其他像素,将其存储在一个数组中然后发回。 这很天真,但我是新手,我正在练习。 对于客户端部分,大多数代码是自动生成的。我在DEBUG评论后添加了我的代码。不确定问题可能是什么,因为当我运行make命令时,它运行得非常好 客户端

#include "compress.h"


void
compress_1(char *host)
{
    CLIENT *clnt;
    char * *result_1;
    image  add_1_arg;

#ifndef DEBUG
    clnt = clnt_create (host, COMPRESS, COMPRESS_VERS, "udp");
    if (clnt == NULL) {
        clnt_pcreateerror (host);
        exit (1);
    }
#endif  /* DEBUG */

    result_1 = add_1(&add_1_arg, clnt);
    if (result_1 == (char **) NULL) {
        clnt_perror (clnt, "call failed");
    }

   printf("%s", result_1);


#ifndef DEBUG
    clnt_destroy (clnt);
#endif   /* DEBUG */
}


int
main (int argc, char *argv[])
{
    char *host;

    if (argc < 2) {
        printf ("usage: %s server_host\n", argv[0]);
        exit (1);
    }
    host = argv[1];
    compress_1 (host);
exit (0);
}

服务器

#include "compress.h"

char **
add_1_svc(image *argp, struct svc_req *rqstp)
{
    static char * result=malloc (sizeof(argp->buffer));;




    return &result;
}

compress.x

struct image{
      char buffer[69999];
};

program COMPRESS{

          version COMPRESS_VERS{
               string add(image)=1;

}=1;
}=0x23451112;

我在运行客户端时遇到此错误

call failed: RPC: Can't encode arguments
Segmentation fault (core dumped)

编辑: 我已经编辑了上面的问题。现在我只是发送一个字符串。但在客户端,result_1正在打印(null)。我认为它与malloc或指针返回指针有关。我弄不清楚。

0 个答案:

没有答案