命名管道服务端
//创建一个异步(重叠I/O)服务端,反射客户端发来的消息
#pragma once
#include <stdio.h>
#include <tchar.h>
#include <Windows.h>
#define NUM_PIPES 5
#define BUFFER_SIZE 256
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE PipeHandles[NUM_PIPES];
DWORD BytesTransferred;
CHAR Buffer[NUM_PIPES][BUFFER_SIZE];
INT i;
OVERLAPPED Ovlap[NUM_PIPES];
HANDLE Event[NUM_PIPES];
BOOL DataRead[NUM_PIPES];
DWORD Ret;
DWORD Pipe;
for(i = 0; i < NUM_PIPES; i++)
{
// 创建命名管道实例
// PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED 双工异步模式
// PIPE_TYPE_BYTE | PIPE_READMODE_BYTE 字节流通信
// NUM_PIPES 连接实例数
// 默认缓冲区大小,等待超时时间1秒,默认安全符
if ((PipeHandles[i] = CreateNamedPipe(TEXT(".//PIPE//Tc"),
PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE, NUM_PIPES,
0, 0, 1000, NULL)) == INVALID_HANDLE_VALUE)
{
printf("创建命名管道实例 %d 失败, 错误代码: %d/n",
i, GetLastError());
return i;
}
// 创建无名的事件对象
// 使用默认安全符,手工复位方式,初试状态为无信号,名称无
if ((Event[i] = CreateEvent(NULL, TRUE, FALSE, NULL))
== NULL)
{
printf("创建命名管道事件对象实例 %d 失败,错误代码: %d/n",