RPC的有关问题及其解决方法
来源:互联网 发布:程序员 兼职 编辑:程序博客网 时间:2024/04/30 06:50
近日,由于项目的需要我初次接触了RPC,在学习过程中遇到了一些问题,在网上搜与之相关的知识时,发现有不少人都遇到过这些问题,所以当我把这些问题解决后就想将自己的解决方法写下来,供网友们参考,由于初次接触RPC,有不妥之处欢迎批评指正。
问题一: 在作控制台RPC应用程序时,常常出现“fatal error C1189: #error : You need a Windows 2000 or later to run this stub because it uses these features:”的错误信息。
该问题的解决办法如下:
在sever和client的cpp文件的顶部增加如下语句:
#ifndef _WIN32_WINNT // 允许使用特定于Windows XP 或更高版本的功能。
#define _WIN32_WINNT 0x0501 // 将此值更改为相应的值,以适用于Windows 的其他版本。
#endif
问题二:采用tcp/ip方式时 RPC程序返回RPC_S_ACCESS_DENIED 异常,如:
// 使用与端点相结合的协议接收远过程调用
if(RpcServerUseProtseqEp(
reinterpret_cast <unsigned char*> ("ncacn_np"), // 使用named pipe.
RPC_C_PROTSEQ_MAX_REQS_DEFAULT, // 积压对列长度.
reinterpret_cast <unsigned char*> ("//pipe//hello"), //named pipe端口.
NULL)) // 无安全防护.
{
return (1);
}
以上代码是可行的, 但换成如下方式时就会返回RPC_S_ACCESS_DENIED
status = RpcStringBindingCompose(
NULL, // UUID to bind to.
reinterpret_cast <unsigned char*> ("ncacn_ip_tcp"), // 使用TCP/IP
// protocol.
reinterpret_cast <unsigned char*> ("localhost"), // TCP/IP network
// address to use.
reinterpret_cast <unsigned char*> ("4747"), // TCP/IP port to use.
NULL, // Protocol dependent network options to use.
&szStringBinding); // String binding output.
该问题的解决办法:将sever端的
// 注册RpcImplicit接口.
if(RpcServerRegisterIf(
RpcImplicit_v1_0_s_ifspec, // 用于注册的接口.
NULL, // 使用MIDL 产生入口点向量.
NULL)) //使用MIDL 产生入口点向量.
{
return (1);
}
改为:
// 注册RpcImplicit接口.
if(RpcServerRegisterIfEx(
RpcImplicit_v1_0_s_ifspec, // Interface to register.
NULL,
NULL, // Use the MIDL generated entry-point vector.
RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH,
0,
NULL)) //使用MIDL 产生入口点向量.
{
return (1);
}
- RPC的有关问题及其解决方法
- C++ : 指针及其有关的问题
- 有关傅里叶变换及其反变换的问题
- 【NAS】NFS问题clnt_create: RPC: Unknown host的解决方法
- heartbeat 3的安装问题及其解决方法
- heartbeat 3的安装问题及其解决方法
- Oracle遇见的问题及其解决方法
- 浏览器的跨域问题及其解决方法
- 有关boost安装和使用的一些问题的解决方法
- 有关乱码的解决方法
- 有关安卓java版本不对问题的解决方法
- 有关Android Debug source not found问题的一些解决方法:
- 有关MySQL驱动的相关问题与解决方法
- 有关CSS中高度坍塌问题的一些解决方法
- LoadRunner测试中遇见的不可思议的问题及其解决方法
- ubuntu 15.04 的安装遇到的问题及其解决方法
- vc部分问题及其解决方法
- 编程一些问题及其解决方法
- 240多个jQuery插件
- Oracle用户管理
- 在C#中使用钩子:按下Alt+F4时使窗口最小化.....
- 如何从硬盘安装Linux
- Struts2.0+Spring2.0+Hibernate3.1登录及增删改查的完整演示示例 连载中...(三)
- RPC的有关问题及其解决方法
- Oracle备份与恢复
- windows时间大全(zz)
- 关于'const char[]' TO 'LPCTSTR'
- 关注使用者,则一切将水到渠成
- 过去的2007,我的2007
- 愁啊~!积分~!为什么要积分呢~!
- java解压缩ZIP
- ms-sql导出数据库结构