文章目录
实验4 使用命名管道实现进程通信
一、实验目的
(1)了解windows系统环境下的进程通讯机制。
(2)熟悉Windows系统提供的进程通信API。
二、实验准备
CreateNamePipe() 创建一个命名管道。管道的命名方式为\\ServerName\pipe\pipename
ConnectNamePipe() 服务器连接命名管道
DisconnectNamePipe() 拆除命名管道服务器与客户端的连接。
CallNamePipe() 客户端连接服务器建立的命名管道。
WaitNamedPipe() 客户端等待服务器连接命名管道。
GetLastError() 以上函数都可调用此函数查询失败的原因。
int strcmp (const char *s1, const char *s2) 比较s1和s2字符串,相等返回0。
char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。
ReadFile() WriteFile() 文件读写
文件读写(Windows API)–ReadFile、WriteFile
三、实验内容
(一)实验内容
使用命名管道完成两个进程之间的通信。
(二)主要代码(部分代码)
PipeServer.cpp
// PipeServer.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "PipeServer.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/
// The one and only application object
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
int err;
bool rc;
HANDLE hPipeHandle1;
char lpName[] = "\\\\.\\pipe\\myPipe";
char InBuffer[50] = "";
char OutBuffer[50] = "";
DWORD BytesRead, BytesWrite;
//创建一个命名管道
hPipeHandle1 = CreateNamedPipe((LPCTSTR)lpName,
PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED | WRITE_DAC ,
PIPE_TYPE_MESSAGE | PIPE_READMODE_BYTE | PIPE_WAIT, 1, 20, 30,
NMPWAIT_USE_DEFAULT_WAIT,
(LPSECURITY_ATTRIBUTES)NULL);
//判断命名管道是否创建成功
if