中间件编程及体会1

中间件编程及体会1

ID:41556478

大小:55.61 KB

页数:7页

时间:2019-08-27

中间件编程及体会1_第1页
中间件编程及体会1_第2页
中间件编程及体会1_第3页
中间件编程及体会1_第4页
中间件编程及体会1_第5页
资源描述:

《中间件编程及体会1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、中间件编程及体会屮间件编程作业:RPC编程,通过Windows系统客户端访问Linux系统上面的文件以及完成open、close>read>write这四个操作,编程的内容有:接口定义、客户端和服务端的代码、开发过程屮的心得。RPC(RemoteProcedureCallProtocol),远程过程调用协议,是一种通过网络从远程计算机程序上请求服务。RPC编程是体验中间件的设计的好途径,中间件为如今计算机科学的快速发展产生的各种不同的平台提供了交流的一个接口。RPC是在单台机器上构建并测试应用程序,然后将程序划分为两个或者多个程序片,加入通信协议以允许每片程序在单独的计算机

2、上运行。从一个程序片调用另一个程序片的过程称为远程过程调用,即RPCo在编程过程屮使用Rpcgen这个编译工具。Rpcgen以和C语言相类似的语法来书写和编译源代码。本次编程的宿主机为WINDOWSXPSP3,安装VMWARE,在虚拟机上面安装一个UBUNTU11.10.接口定义的主要代码如下:structopenrequeststringfname<255>;intflagintmode;};structreadrequestintfhandle;intoffset;intlength;};structreadresultopaquedatao;};structwrite

3、request{intfhandle;intoffset;opaquedatao;};typedefintfhandle;/*open返回参数*/typedefstructopenrequestopen_req;/*open请求参数*/typedefstructreadrequestread_req;/*read请求参数*/typedefstructreadresultread_res;/*read返冋参数*/typedefstructwriterequestwrite_req;/*write请求参数*/typedefintwrite_res;/*write返回参数*/pr

4、ogramFILEOPERATE_PROG{versionFILEOPERATE_VERSION{fhandleROPEN(open_req)=l;read」esRREAD(read_req)=2;write_resRWRITE(write_req)=3;voidRCLOSE(fhandle)=4;}=1;}=0x37654321;主要代码:服务端:1>打开文件fhandle*ropen_l_svc(open_req*argp,structsvc_req*rqstp){staticfhandleresult;result=open(argp・>fnam巳argp・>flag

5、,argp・>mode);return&result;}2、读文件read_res*rread_l_svc(read_req*argp,structsvc_req*rqstp){staticread_resresult;intret=O;ret=lseek(argp->fhandle,argp・>offset,SEEK_SET);if(ret<0){result.data.datajen二ret;return&result;char*buf=(char*)malloc(argp->length);if(buf==NULL){result.data.data」en=-l;re

6、turn&result;};ret=read(argp->fhandebu£argp・>length);result.data.datajen二ret;result.data.data_val=buf;return&result;}3、写文件write_res*rwrite_l_svc(write_req*argp,structsvc_req*rqstp){staticwrite_resresult;result=lseek(argp->fhandeargp->offset,SEEK_SET);if(result<0){return&result;}result=write

7、(argp->fhandle,argp・>data.data_val,argp->data・data_len);if(result<=0)perror(,,writeH);return&result;}4、关闭文件void*rclose_l_svc(fhandle*argp,structsvc_req*rqstp){staticchar*result;close(*argp);return(void*)&result;}客户端:ropen_l_arg.fname=,,test.fileH;ropen_l_arg.f

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

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

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