- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 rpcgen
创建一个简单的server-client
程序。
我正在编写这个 .x
文件:
program REMOTE_PROG {
version MSG_RCV {
int STRLEN(string) = 1;
double SQUARE(double *) = 2;
int NUM_OF_DEV(int *) = 3;
} = 1;
} = 99;
使用 rpcgen file.x
执行 -> 生成 file_svc.c
。
在 file_svc.c
文件中,出于某种原因,它生成了每个带有 _svc
扩展名的函数案例:
case STRLEN:
xdr_argument = xdr_wrapstring;
xdr_result = xdr_int;
local = (char *(*)()) strlen_1_svc; //<--_SVC
break;
当我在实现功能后尝试编译服务器时
int * strlen_1(char **, CLIENT *);
编译器引发该错误:
"_strlen_1_svc", referenced from:
_remote_prog_1 in file_svc-8501b7.o
ld: symbol(s) not found for architecture x86_64
但是如果我删除那个自动生成的 _svc 扩展,local = (char *(*)()) strlen_1;//没有_svc
程序将编译成功。
为什么会这样?为什么 rpcgen 将 _svc 扩展添加到函数中,而我在删除 _svc 时是否做错了什么?
P.S 同样的错误也适用于 square 和 num_of_dev 函数,例如只给出了 strlen。
谢谢!
最佳答案
这是惯例,_svc 是服务的缩写。
您的服务器需要实现服务函数,即strlen_1_svc
函数。
您的客户端调用 strlen_1
函数。 rpcgen + RPC 库完成所有中间工作 - 它为客户端使用的 strlen_1
生成代码,该代码将序列化数据并将其传输到服务器,事件循环将调用分派(dispatch)到您的代码中strlen_1_svc
函数。
关于c - rpcgen 添加 _svc 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34694896/
我正在尝试使用 rpcgen 包将字符串作为结构的一部分通过网络传递。这是我的 IDL 代码: struct param { char* name; int voterid; };
我正在阅读 Oracle 网站上的 RPCgen 教程 http://docs.oracle.com/cd/E19683-01/816-1435/6m7rrfn7f/index.html , 但不理解
我正在尝试将字符指针从 rpc 客户端发送到 rpcgen 中的服务器,下面是服务器和客户端程序 RPC gen 的 RPC 程序 struct clientinput { char * op
我们使用rpcgen在Linux机器上创建了一个rpc服务器(c语言)。当我们的程序有很多调用时,它仍然会产生一个线程请求。我发现这是 2004 年的常见问题,有一个新的 rpcgen (或其他生成器
我是 C 语言编程的新手。我尝试创建一个小而简单的程序来将文件 calculs.x 中的两个整数相加 这里是calculs.x文件的内容 /* calculs.x*/ struct data_in {
我是这样理解的: .x 文件定义了服务器和客户端共享的接口(interface)和参数。当您使用 rpcgen 编译它时,它会生成 .h、_xdr.c、_clnt.c 和 _svc.c。 _clnt.
我正在尝试使用 RPCGen 来了解 RPC 的基础知识。我按照基本教程编写了以下 myrpc.x 文件 program MESSAGEPROG { version EVALMESSAGEVE
我正在使用 rpcgen 库创建一个应用程序,我必须在服务器端使用 HashMap 。将 STL 库(或任何 C++ 代码)与 rpcgen 一起使用是否可取?我试过用 g++ 编译文件并且它有效。或
使用 rpcgen 创建一个简单的server-client 程序。 我正在编写这个 .x 文件: program REMOTE_PROG { version MSG_RCV {
我创建了一个像这样的IDL: struct intpair { int a; int b; }; program ADD_PROG { version ADD_VERS {
我正在做一项作业,我们必须使用 RPCgen 生成的服务器和客户端 .c 文件来交换有关共享绘图板的信息。绘图板是使用 QtCreator 和 QtPainter 实现的。 我遇到的问题是,在编译时,
我正在尝试在我的 debian - lenny 上编译 VXI11 源代码,但出现此错误: make rpcgen -M vxi11.x make: rpcgen: command not found
我有一个文件 reken.x、client.c 和 server.c 来创建一个分布式系统。客户端将两个质数(因此是一个数)的乘积发送到服务器上的“ontbind”函数,该函数将数字分解回两个质数。当
我是一名优秀的程序员,十分优秀!