Tag: xdr

了解XDR规范以创建* .x文件

我一直在浏览互联网上的几个网站,并且实际上想知道我们如何在.x文件中编写规范以在.c文件中为RPC生成等效函数。 我访问过的每个网站都建议在* .x文件中使用以下类型的规范: program ADD_PROG { version ADD_VERS { int ADD(intpair) = 1; } = 1; } = 0x23451111; 因此,为了实际理解,我从一个名为ganglia的开源项目中获取了gm_protocol.x ,并使用rpcgen生成了等效的C源代码( gm_protocol_xdr.c )和C头文件( gm_protocol.h )。 [rohit@ganglia-server rpc]$ rpcgen -C gm_protocol.x [rohit@ganglia-server rpc]$ [rohit@ganglia-server rpc]$ ll total 24 -rw-rw-r– 1 rohit rohit 5786 Oct 28 17:52 gm_protocol.h -rw-rw-r– 1 rohit rohit 3485 Oct 28 15:04 gm_protocol.x […]

无法在远程过程调用中编码参数以进行服务器注册

我有点疯狂试图弄清楚为什么这不起作用。 我正在使用sunrpc,但生成的服务器代码会抛出以下内容: 无法注册服务:RPC:无法编码参数 无法注册(MYRPC,MYRPC_V1,udp)。 我不知道为什么会这样。 我正在执行以下操作来生成存根: $ rpcgen -NMC myrpc.x 这是我的XDR struct imgdata{ opaque data; }; program MYRPC { version MYRPC_V1 { imgdata minify(imgdata) = 1; } = 1; } = 0x30D0D0DFF; 编译.x文件以创建客户端,服务器,xdr编组代码或标头时,我没有收到任何错误。 我还实现了rpc接口,但由于在我尝试启动生成的服务器(myrpc_svr.c)时抛出该错误,因此无法对其进行测试。 甚至引用此错误消息的参数是什么? 它不喜欢我在XDR中定义的函数的实现吗? 为什么编码参数会导致程序甚至无法注册? 我真的很惊讶这不是客户端错误消息

RPC无法解码TCP传输的参数

我正在研究基于此页面示例的multithreadingRPC服务器: http : //bderzhavets.blogspot.ca/2005/11/multithreaded-rpc-server-in-white-box.html 不幸的是,它没有完全开箱即用,在追逐错误一段时间之后,我发现服务器无法解码参数(基于squareproc_2的返回码)。 在函数serv_request调用squareproc_2_svc之后,服务器端的执行似乎停止了。 请参阅case: SQUAREPROC中的代码中的SQUAREPROC void *serv_request(void *data) { struct thr_data *ptr_data = (struct thr_data *)data; { square_in argument; square_out result; bool_t retval; xdrproc_t _xdr_argument, _xdr_result; bool_t (*local)(char *, void *, struct svc_req *); struct svc_req *rqstp = ptr_data->rqstp; register SVCXPRT *transp = ptr_data->transp; switch (rqstp->rq_proc) { case NULLPROC: printf(“NULLPROC called\n”); (void) […]