1. 程式人生 > >命名管道進程通信

命名管道進程通信

start 技術分享 false article 分享圖片 tin ati center IT

命名管道進程通信

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

? 執行效果 技術分享圖片

命名管道進程通信