我正在创建一个非常简单的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或指针返回指针有关。我弄不清楚。