用IO完成端口实现管道异步服务端

本文详细介绍了如何在Windows编程中使用异步IO完成端口实现管道服务端,并提供了创建和连接客户端的代码示例。服务端通过接收连接并处理消息,展示了异步通信的优势。

windows编程中,如果涉及到本地两个进程之间的通信,最好的方式就是管道,管道支持同步和异步两种模式,作为服务端,当然用异步好,本文章直接提供用IO完成端口实现管道服务端的代码。

// PipeServer.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <Windows.h>


struct MyOverlapped
{
   
   
	OVERLAPPED overlapped;
	char szBuf[1024];
	int iType;
	HANDLE hPipe;
};


LPTSTR lpszPipename = TEXT("\\\\.\\pipe\\pipename");

DWORD WINAPI ThreadFunc(LPVOID);

HANDLE gPipeInst = INVALID_HANDLE_VALUE;

int main()
{
   
   
	HANDLE iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);

	gPipeInst = CreateNamedPipe(
		lpszPipename,            // pipe name 
		PIPE_ACCESS_DUPLEX |     // read/write access 
		FILE_FLAG_OVERLAPPED,    // overlapped mode 
		PIPE_TYPE_MESSAGE |      // message-type pipe 
		PIPE_READMODE_MESSAGE |  // message-read mode 
		PIPE_WAIT,               // blocking mode 
		PIPE_UNLIMITED_INSTANCES, // number of instances 
		0,   // output buffer size 
		0,   // input buffer size 
		NMPWAIT_WAIT_FOREVER,     // client time-out 
		NULL);                   // default security attributes

	CreateIoCompletionPort(gPipeInst, iocp, 10001, 0);

	MyOverlapped *overlapped = new MyOverlapped;
	memset(overlapped, 0, sizeof(MyOverlapped));
	overlapped-
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值