Linux下C语言远程调用

Linux下C语言远程调用

ID:37710935

大小:56.50 KB

页数:10页

时间:2019-05-29

Linux下C语言远程调用_第1页
Linux下C语言远程调用_第2页
Linux下C语言远程调用_第3页
Linux下C语言远程调用_第4页
Linux下C语言远程调用_第5页
资源描述:

《Linux下C语言远程调用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux下C语言编程的-RPC远程调用编程在查看libc6-dev软件包提供的工具(用dpkg-Llibc6-dev命令)的时候,发现此软件包提供了一个有用的工具rpcgen命令。通过rpcgen的man手册看到此工具的作用是把RPC源程序编译成C语言源程序,从而轻松实现远程过程调用。下面的例子程序的作用是客户端程序取中心服务器上时间的,编程过程如下:先编写一个“RPC语言”(RPCLanguage(RemoteProcedureCallLanguage))的源文件test.x,文件后缀名为x。源代码如下:programTESTPROG{       version

2、VERSION{         stringTEST(string)=1;       }=1;}=87654321;说明:这里数字87654321是RPC程序编号,还有VERSION版本号为1,都是给RPC服务程序用的。同时指定程序接受一个字符串参数。运行这个命令:rpcgentest.x将生成三个源文件:test_clnt.c      test.h      test_svc.c源文件test_clnt.c内容如下:/**Pleasedonoteditthisfile.*Itwasgeneratedusingrpcgen.*/#include

3、>/*formemset*/#include"test.h"/*Defaulttimeoutcanbechangedusingclnt_control()*/staticstructtimevalTIMEOUT={25,0};char**test_1(char**argp,CLIENT*clnt){            staticchar*clnt_res;            memset((char*)&clnt_res,0,sizeof(clnt_res));            if(clnt_call(clnt,TEST,              

4、      (xdrproc_t)xdr_wrapstring,(caddr_t)argp,                    (xdrproc_t)xdr_wrapstring,(caddr_t)&clnt_res,                    TIMEOUT)!=RPC_SUCCESS){                    return(NULL);            }            return(&clnt_res);}说明:这是一个客户端调用函数,即客户端代码需要用到此函数。源文件test.h内容如下:/**Pleasedono

5、teditthisfile.*Itwasgeneratedusingrpcgen.*/#ifndef_TEST_H_RPCGEN#define_TEST_H_RPCGEN#include#ifdef__cplusplusextern"C"{#endif#defineTESTPROG87654321#defineVERSION1#ifdefined(__STDC__)

6、

7、defined(__cplusplus)#defineTEST1extern      char**test_1(char**,CLIENT*);extern      char*

8、*test_1_svc(char**,structsvc_req*);externinttestprog_1_freeresult(SVCXPRT*,xdrproc_t,caddr_t);#else/*K&RC*/#defineTEST1extern      char**test_1();extern      char**test_1_svc();externinttestprog_1_freeresult();#endif/*K&RC*/#ifdef__cplusplus}#endif#endif/*!_TEST_H_RPCGEN*/说明:这里定义了一些公用头文

9、件。源文件test_svc.c内容如下:/**Pleasedonoteditthisfile.*Itwasgeneratedusingrpcgen.*/#include"test.h"#include#include#include#include#include#include#include#ifndefSIG_PF#defineSIG_PFvoid(*)(int)#endifst

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。