服务端:
// PipeServer.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { HANDLE hPipe = CreateNamedPipeW(L"\\\\.\\pipe\\PipeTest", PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 4096, 4096, 0, NULL); //PIPE_ACCESS_DUPLEX 表示可读可写 if (hPipe == INVALID_HANDLE_VALUE) { printf("create pipe fail\n"); } if (ConnectNamedPipe(hPipe, NULL) || (GetLastError() == ERROR_PIPE_CONNECTED)) { DWORD cbBytesRead; char chRequest[4096]; bool fSuccess = ReadFile(hPipe, chRequest, 4096, &cbBytesRead, NULL); chRequest[cbBytesRead] = '\0'; printf("%s\n", chRequest); if (!fSuccess || cbBytesRead == 0) { } char str[] = {"123123"}; WriteFile(hPipe, str, strlen(str), &cbBytesRead, NULL); Sleep(2000); DisconnectNamedPipe(hPipe); } else { CloseHandle(hPipe); printf("close"); } CloseHandle(hPipe); return 0; }
客户端端:
// PipeClient.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> int _tmain(int argc, _TCHAR* argv[]) { HANDLE m_hPipeToMain = CreateFile(L"\\\\.\\pipe\\PipeTest", GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); if (m_hPipeToMain != 0 || m_hPipeToMain == INVALID_HANDLE_VALUE) { DWORD dwWrite; char szPipeUpdate[200] = "send message form client"; WriteFile(m_hPipeToMain, szPipeUpdate, strlen(szPipeUpdate), &dwWrite, NULL); printf("send pipe success\n"); ZeroMemory(szPipeUpdate, 200); ReadFile(m_hPipeToMain, szPipeUpdate, 200, &dwWrite, NULL); Sleep(2000); printf("%s\n", szPipeUpdate); CloseHandle(m_hPipeToMain); } else{ printf("ERROR\n"); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文链接: https://www.cnblogs.com/qq76211822/p/4712002.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/220007
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!