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-

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

被折叠的 条评论
为什么被折叠?



