我是RPC的新手。在规范文件.x文件中,我编写了一个接受sqaure_in结构并返回square_out结构的方法。但是,这就是让我模糊的原因,当我从客户端文件调用远程方法squareproc_1时,我传递了一个指针,而不是该struct的值,但是在规范文件中,该方法接受struct square_in而不是一个指针,所以为什么呢?发生了吗?
client.c
int main(int argc, char **argv) {
CLIENT *c1;
square_in in;
square_out *outp;
if(argc != 3) {
printf("usage: client <HOST NAME> <integer-value>\n");
exit(-1);
}
c1 = clnt_create(argv[1], SQUARE_PROG, SQUARE_VERS, "tcp");
in.arg1 = atoi(argv[2]);
if((outp = squareproc_1(&in, c1)) == NULL) {
printf("%s", clnt_sperror(c1, argv[1]));
exit(-1);
}
printf("result: %ld\n", outp->res1);
exit(0);
}
square.x
struct square_in {
long arg1;
};
struct square_out {
long res1;
};
program SQUARE_PROG {
version SQUARE_VERS {
square_out SQUAREPROC(square_in) = 1;
} = 1;
} = 0x31230000;