- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RPC分布式實验指导书
实现一个RPC应用程序
验内容
创建一个简单的客户机——服务器的分布式应用程序,实现客户应用程序在一个远程过程调用中,向服务器传递一个整数,经过服务器端求阶乘后,将最终结果从客户机端输出。
㈡处理流程
2.1开发接口,具体步骤包括:
2.1.1创建接口模板
在命令行方式下运行uuidgen工具,生成文件Rpctest.idl
D:\Program Files\Microsoft Visual Studio\Common\Toolsuuidgen /I /o Rpctest.idl
Solark: uuidgen /I /oRpctest.idl
书写要注意uuidgen空格/I空格/oRpctest.idl 其中参数o和Rpctest.idl中间没有空格。
执行后,Rpctest.idl中内容为:
[
uuid(698cb6d9-df44-41a7-a66f-addc7e731fe1),
version(1.0),
]
interface INTERFACENAME
{
}
2.1.2
替换Rpctest.idl中接口的定义(原来是:interface INTERFACENAME),改为:
interface Rpctest
{ //远程过程调用的求阶乘函数
long RpcFactorial([in] long nVal); // 出现[ ]的部分表示属性
void Shutdown(void);// 终止服务器程序函数Shutdown 必须要
}
2.1.3
使用文本编辑器编写ACF(属性配置文件),Rpctest.acf
[
implicit_handle (handle_t Rpctest_IfHandle)
//这个必须要,用来连接服务器和客户端的
]
interface Rpctest //solark:要和idl中接口名称一致
{
}
2.1.4
使用MIDL编译器进行编译(注:Rpctest.idl和Rpctest.acf都放Bin目录下)在命令行方式下运行MIDL.EXE,
D:\Program Files\Microsoft Visual Studio\VC98\Binmidl Rpctest.idl
编译后生成文件 Rpctest.h、Rpctest_c.c、Rpctest_s.c
Solark:此处还有一个办法:创建一个空的,如RpcTest将编辑好的.idl文件添加至RpcTest项目中。 然后,直接进行编译。 这时就可以看到RpcTest项目的生成目录下有了三个文件Rpctestserver,把Rpctest.h、Rpctest.idl 、Rpctest.acf和Rpctest_s.c放到这个项目下面,
然后导入Rpctest.h Rpctest_s.c 另外两个不导入也可以的
创建memstub.h(内存管理函数,memstub.h内容固定,除头文件外无需改变)
2.2.2实现具体的接口函数功能
新建文件Rpctest_s_f.c中实现阶乘函数;同时Rpctest_s_f.c中也包括了终止服务器程序函数Shutdown
2.2.3编写服务器源程序
Rpctest_s.c 一点都不改变。添加一个新文件main.cpp 里面放main()函数. main()函数里代码负责建立RPC接口的捆绑, 并用名称服务程序来注册它们及侦听RPC请求. Server端也与RPC runtime连接.
2.2.4
在VC环境下编译和链接服务器端程序,最终生成Rpctestserver.exe文件(在Debug文件里面)
注:在VC中Project-Settings-Link中添加两个RPC运行库:rpcrt4.lib和 rpcns4.lib
编译工程生成Rpctestserver.exe,更名为server.exe
(rpcns4.lib 名字服务函数;rpcrt4.lib 3 2位Windows运行期函数 )
3.开发客户机程序,具体步骤包括:
2.3.1
VC环境下建一个空项目Rpctestclient,把Rpctest.h、Rpctest.idl 、Rpctest.acf和Rpctest_c.c放到这个项目下面,
然后导入Rpctest.h Rpctest_c.c 另外两个不导入也可以的
创建memstub.h(内存管理函数,memstub.h内容固定,除头文件外无需改变)
Rpctest_s.c 一点都不改变。添加一个新文件main_c.cpp 里面放main()函数。main()函数里代码负责连接服务器和调用远程函数
2.3.3在VC环境下编译和链接客户端程序,最终生成Rpctestclient.exe文件(在Debug文件里面)注:同上,也需在此工程中添加r
您可能关注的文档
- RedHat—linux操作系統命令手册(总结).doc
- RCYCS-C智能液壓综合测试实验指导书.doc
- RedhatLinux62下Oracle10g安裝配置手册.docx
- redmineruby插件安裝指南手册.docx
- RDLC使用手冊v2.doc
- RCU維护手册.doc
- RedHat50業务安装配置手册.doc
- Reflow操作手冊6章6_1-15~19.doc
- REITs的主體关键协议和规则要点汇总以及与商业信托IPO之比较.doc
- Redmine使用手冊.doc
- 2024年度安永全球另类投资基金调查报告.docx
- 2024年中国汽车产业出海回顾分析 -中汽信科国际化研究团队.docx
- 【民航局国际合作服务中心】马尔代夫民航业发展研究报告.docx
- 2025走向融合与深化的中国媒介市场报告-星传媒体.docx
- 2023Givaudan和ESG目的与性能.docx
- 中国民间应对气候变化行动故事集-教育故事.docx
- 2025AI制药市场规模产业链构成应用现状及AI制药公司分析报告.docx
- 医疗器械专题之基因测序:分子诊断掌上明珠,四代测序开启规模化应用时代.docx
- 2024年中央银行黄金储备调查报告 202406.docx
- 智慧芽 -2024第4季度全球潜力靶点及FIC产品调研报告.docx
文档评论(0)