Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C语言介绍RPCGEN-无法创建客户端_C_Rpc - Fatal编程技术网

使用C语言介绍RPCGEN-无法创建客户端

使用C语言介绍RPCGEN-无法创建客户端,c,rpc,C,Rpc,我正在尝试创建一个示例RPC程序来了解更多信息。它所做的只是承认我手头有一个正在工作的RPC程序,然后才开始进一步干预它。在提到我的问题之前,这里是我的代码,它非常简单: /* myrpc.x file*/ program MESSAGEPROG { version EVALMESSAGEVERS { int EVALMESSAGE(string) = 1; } = 1; } = 0x20000002; 远程方法如下所示: /* Remote method on a .c

我正在尝试创建一个示例RPC程序来了解更多信息。它所做的只是承认我手头有一个正在工作的RPC程序,然后才开始进一步干预它。在提到我的问题之前,这里是我的代码,它非常简单:

/* myrpc.x file*/
program MESSAGEPROG {
   version EVALMESSAGEVERS {
     int EVALMESSAGE(string) = 1;
   } = 1;
} = 0x20000002;
远程方法如下所示:

/* Remote method on a .c file */
#include <stdio.h>
#include "myrpc.h" 

int * evalmessage_1_svc(char **msg, struct svc_req *req)

{
    static int result = 0;
    printf("Message is: %s,\n",*msg);
    return (&result);
}
#include <stdio.h>
#include "myrpc.h" 

main(int argc, char **argv)

{
    CLIENT * clnt;
    char * server;
    char * msg;

    server = argv[1];
    msg = argv[2];

    clnt = clnt_create(server, MESSAGEPROG, EVALMESSAGEVERS, "visible");
    if (clnt == (CLIENT *)NULL) { printf("Failure\n"); }

    int * answer;
    answer = evalmessage_1(&msg,clnt);

    clnt_destroy(clnt);
    exit(0);
.c文件上的远程方法*/ #包括 #包括“myrpc.h” int*evalmessage_1_svc(字符**msg,结构svc_req*req) { 静态int结果=0; printf(“消息为:%s\n”,*msg); 返回(&结果); } 最后,测试文件如下所示:

/* Remote method on a .c file */
#include <stdio.h>
#include "myrpc.h" 

int * evalmessage_1_svc(char **msg, struct svc_req *req)

{
    static int result = 0;
    printf("Message is: %s,\n",*msg);
    return (&result);
}
#include <stdio.h>
#include "myrpc.h" 

main(int argc, char **argv)

{
    CLIENT * clnt;
    char * server;
    char * msg;

    server = argv[1];
    msg = argv[2];

    clnt = clnt_create(server, MESSAGEPROG, EVALMESSAGEVERS, "visible");
    if (clnt == (CLIENT *)NULL) { printf("Failure\n"); }

    int * answer;
    answer = evalmessage_1(&msg,clnt);

    clnt_destroy(clnt);
    exit(0);
#包括
#包括“myrpc.h”
主(内部argc,字符**argv)
{
客户*clnt;
字符*服务器;
char*msg;
服务器=argv[1];
msg=argv[2];
clnt=clnt_create(服务器、MESSAGEPROG、EVALMESSAGEVERS,“可见”);
if(clnt==(CLIENT*)NULL){printf(“Failure\n”);}
int*答案;
答案=评估信息1(&msg,clnt);
clnt_销毁(clnt);
出口(0);
}

我的问题是,我得到的输出是:“Failure”,这表示我无法创建客户端。我使用ubuntu/linux作为我的平台,使用C作为我的编程语言。我在建立项目时没有遇到问题


提前感谢您的时间。

在问题行:

clnt = clnt_create(server, MESSAGEPROG, EVALMESSAGEVERS, "visible");
将最后一个参数更改为“udp”对我来说很有效

clnt = clnt_create(server, MESSAGEPROG, EVALMESSAGEVERS, "udp");