linux与windows的RPC互通信的完整例子

由于中间件实验的要求,需要完成linux与windows之间的rpc通信,折腾了很久,终于搞定!写这篇文章的主要原因是,在查找资料的过程中,觉着网上的资料不全,也不详细(可能我没找到更好的吧),所以记下来,,希望能够给大家有点帮助,也方便自己以后查阅。

老习惯,上参考文章:(其实查了很多资料,只记得这几个了)

地址一:

地址二:

地址三:?url=gcQ-tH2ioZqxpCfBGOFM_rhcUq6I4XEQATXP-GMm9Nw-xcxwSoBhdXCJ9lxA5sZ98WAUM929aWsLFO28oCOUKK

地址四:

地址五:

实验环境:

linux端:fedora 16(虚拟机下),ip为192.168.100.200

windows端:win 7,ip为192.168.100.1

注意,windows端和linux端必须能够ping通,至于虚拟机的配置就不详述啦,不懂可以百度谷歌

参考地址四,完成代码工作,这样你就拥有了math.x、math_xdr.c、math.h、math_clnt.c、math_svc.c、math_client.c、math_server.c至少这7个文件,按照地址四给出的步骤,不出意外的话,恭喜你,完成了linux下本机的rpc通信

下面才是重点!!!

一、windows到linux的rpc通信,linux为服务端

1、将这7个文件全部拷到windows下,在VC6下新建一个空工程(rpc_math_client),将math.h、math_clnt.c、math_xdr.c、math_client.c这四个文件拷到你所建的工程目录(…\rpc_math_client)下,在vc6下工作区中右击Source Files,选择添加文件到目录将三个.c文件加入,右击Header Files,选择添加文件到目录,将math.h文件加入,点击编译,当然会出现很多错误。

2、将oncrpc.sdk\include目录下的文件拷到VC6自己的include目录下,比如我的是C:\Program Files\Microsoft Visual Studio\VC98\Include,

将oncrpc.sdk\win32lib目录下的pwrpc32.lib拷到VC6的lib目录下,我的是C:\Program Files\Microsoft Visual Studio\VC98\Lib,

将math_xdr.c文件中的“register int32_t *buf;”这一行删除,

在math_client.c文件的头部加上#pragma comment(lib,”pwrpc32.lib”)这一行。这样编译就能通过了。

还需要将math_client.c的main函数改成

int main (int argc, char *argv[]){char *host=”192.168.100.200″; //host为你的服务端的地址math_prog_1 (host);exit (0);}

意思就是把host写死,不用再命令行下输参数了。点击运行(在这之前,需要将你linux下的服务端起起来,命令行输./math_server &),会提示缺失“pwrpc32.dll”文件,将oncrpc.sdk\bin目录下的该文件放入你所建工程的debug目录下即可。

运行后,根据要求输入数据,等了很长时间都没反应,最后会提示“RPC: Port mapper failure – RPC: Timed out”,在地址五中有解决的方法。

再次运行,就大功告成!恭喜你,完成了windows到linux的rpc通信。

二、linux到windows的rpc通信,windows为服务端

1、在VC6下新建一个空工程(rpc_math_server),将math.h、math_svc.c、math_xdr.c、math_server.c这四个文件按照上述的方法加入工程。

2、将math_xdr.c文件中的“register int32_t *buf;”这一行删除

在math_server.c文件的头部加上#pragma comment(lib,”pwrpc32.lib”)这一行

将math_svc.c文件的#include <sys/socket.h>和#include <netinet/in.h>这两行注释掉

双击oncrpc.sdk/bin目录下的portmap.exe,启动portmap

运行,同样需要将“pwrpc32.dll”文件放入debug目录下。

在linux下运行客户端(./math_client 192.168.100.1),即可得到结果。

至此,windows与linux的rpc互通信完成。可以看出,即使在windows下没有rpcgen工具也可以完成。在给出的sdk中是有rpcgen.exe的,但是个人感觉生成起来特别麻烦,各种缺少库,最后终于生成了想要的文件,编译也是一大堆错误,索性也就把linux下生成的文件直接拷到windows下了。

文中所要用到的oncrpc.sdk以及两个例子的代码可在下载,希望能够帮助到大家。

本文出自 “我的黑客” 博客,请务必保留此出处

沿途跟着一条河,你看着它在晨光暮霭中变换着色彩,

linux与windows的RPC互通信的完整例子

相关文章:

你感兴趣的文章:

标签云: