为什么远程方法签名与RPC中的规范不同?

时间:2018-12-22 14:22:57

标签: c rpc

我是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;

0 个答案:

没有答案