码迷,mamicode.com
首页 > 系统相关 > 详细

命名管道进程通信

时间:2018-03-15 14:18:19      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:发送   实现   namedpipe   serve   pip   space   forever   分享   main   

命名管道进程通信

效果: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; }

?
执行效果
技术分享图片

命名管道进程通信

标签:发送   实现   namedpipe   serve   pip   space   forever   分享   main   

原文地址:https://www.cnblogs.com/zhchoutai/p/8573052.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!