混合语言编程之VC++和C#管道通信

来源:互联网 发布:淘宝买家信息采集 编辑:程序博客网 时间:2024/05/28 05:18

使用混合语言编程,可发挥各自语言的优势,从而方便快速地完成任务。采用混合语言编程,就必然要解决进程间通信问题。管道似乎是一种不错的选择。今天参考了国外的一个开源工程,又查看了相关资料。
命名管道最大的特点便是建立一个简单的客户机/服务器程序设计体系。在这个体系结构中,在客户机与服务器之间,数据既可单向传递,亦可双向流动。
服务器:
1)使用API函数CreateNamedPipe,创建一个命名管道实例句柄。
2)使用API函数ConnectNamedPipe,在命名管道实例上监听客户机连接请求。
3)使用API函数ReadFile,从客户机接收数据;使用API函数WriteFile,将数据发给客户机。
4)使用API函数DisconnectNamedPipe,关闭命名管道连接。
5)使用API函数CloseHandle,关闭命名管道实例句柄。 
客户端:
1)用API函数WaitNamedPipe,等候一个命名管道实例可供自己使用。
2)用API函数CreateFile,建立与命名管道的连接。
3)用API函数WriteFile和ReadFile,分别向服务器发送数据,或从中接收数据。
4)用API函数CloseHandle,关闭打开的命名管道会话。

本例程服务器使用VC++,客户端使用C#,服务器端VC++直接使用Windows API即可。
C#客户端使用管道有两种方式:1)使用.NET封装的NamedPipeClientStream。
2)在托管环境下加载非托管Win32 API。
第一种较简单,不再说明。管道的相关API函数在kernel32.dll库中,C#通过DllImport的方式申明Win32 API并调用相关函数,就可使用Windows API操作管道。 
有兴趣请参考源代码,运行环境为vs2010。附件下载(免积分,希望大家分享资源时都不要积分):http://download.csdn.net/detail/dawsen/5760333


更新下载地址(2015.11.9):http://download.csdn.net/detail/taonull/9254567

0 0
原创粉丝点击