您的位置:首页 > 其它

命名管道进程通信

2018-03-15 13:19 369 查看

命名管道进程通信

效果:server读取client发送的字符串。

 
server:
// named-pipe-server.cpp
#include
#include
using namespace std;
char buf[100];
HANDLE hpipe;
DWORD rlen=0,wlen=0;
void f_create(){
hpipe=CreateNamedPipe("\\\\.\\pipe\\me",PIPE_ACCESS_DUPLEX ,
PIPE_TYPE_MESSAGE|PIPE_WAIT ,PIPE_UNLIMITED_INSTANCES,0,0,0,NULL);

if(ConnectNamedPipe(hpipe, 0)==FALSE){//等待客户端链接
cerr<<"链接成功\n"<

 

client:
//named-pipe-client.cpp
#include
#include
#include
using namespace std;
char buf[100];
HANDLE hpipe;
DWORD rlen=0,wlen=0;
void f_connect(){
WaitNamedPipe("\\\\.\\pipe\\me",NMPWAIT_WAIT_FOREVER);//等待连接
hpipe=CreateFile("\\\\.\\pipe\\me",
GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);//打开管道
if(hpipe==INVALID_HANDLE_VALUE) cerr<<"open named pipe error\n";
else cout<<"open named pipe ok\n";
}
void f_write(char *a){
if(WriteFile(hpipe,a,256,&wlen,0)==FALSE){
cerr<<"client write error\n";
}
else{
cout<<"client write ok. context is:"<

 

control:
//通过编程实现先开启server。再打开 client。

#include
#include
using namespace std;
int main(int argc, char *argv[])
{
system("start named-pipe-server.exe");//start 不能漏
Sleep(1000);
system("start named-pipe-client.exe");
return 0;
}

 
执行效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: