gpt4 book ai didi

c - 在 c 中使用 rpc 将字符串作为参数传递

转载 作者:太空宇宙 更新时间:2023-11-04 04:54:24 25 4
gpt4 key购买 nike

我正在尝试编写一个简单的 RPC 程序,它将一个字符串作为参数并将其长度返回给调用程序。我正在使用 RPCGEN 生成所需的 stub 。代码如下:prog.x 文件:

    program PROGRAM_PROG {
version PROGRAM_VERS {
int fun(string) = 1; /* procedure number = 1 */
} = 1; /* version number = 1 */
} = 0x31234567; /* program number = 0x31234567 */

client.c 文件:

    #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <rpc/rpc.h> /* standard RPC include file */
#include "prog.h" /* this file is generated by rpcgen */
#include "math.h"
main(int argc, char *argv[])
{
CLIENT *cl; /* RPC handle */
char *server;
char *word;
int *lresult; /* return value from bin_date_1() */

if (argc != 3) {
fprintf(stderr, "usage: %s hostname\n", argv[0]);
exit(1);
}

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

printf("%s======\n", server);
printf("%s======\n", word);
/*
* Create client handle
*/

if ((cl = clnt_create(server, PROGRAM_PROG, PROGRAM_VERS, "udp")) == NULL) {
/*
* can't establish connection with server
*/
clnt_pcreateerror(server);
exit(2);
}

/*
* First call the remote procedure "bin_date".
*/
printf("123\n");
if ( (lresult = fun_1(&word, cl)) == NULL) {
clnt_perror(cl, server);
exit(3);
}
printf("456\n");
printf("time on host %s = %d and look, word: %s\n",server, *lresult, word);


clnt_destroy(cl); /* done with the handle */
exit(0);

最后是 serverproc.c 文件:

    #include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
#include <rpc/rpc.h>
#include "prog.h"


int *fun_1(char **p, CLIENT *cl)
{
int len;
int t;
t = strlen(*p);

return &t;
}

int * fun_1_svc(char **p, struct svc_req *cl){
CLIENT *client;
return(fun_1(0, client));
}

代码编译正常,但在运行时,它只是挂起,我必须使用 Ctrl-C 来结束它。问题可能出在 serverproc.c 文件中。我究竟做错了什么?

最佳答案

可能是以下原因:

  • 检查是否安装了 rpcbind 或 portmap 否则做
     sudo apt-get install rpcbind
  • 如果已安装,则只做一件事。 :仅使用 rpcgen 生成您的客户端和服务器代码,如下所示:

     rpcgen prog.x -a 

它将为您生成示例客户端和服务器代码。

  • 只需在客户端代码和服务器代码中添加几行代码,将计算出的长度设置为静态变量“result”(已经存在)。
  • 试一试,一定会成功的!!

关于c - 在 c 中使用 rpc 将字符串作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10793727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com