一个完整的NamedPipe分为服务器和客户端.服务器要先运行,客户端才能正常运行.所以先写服务器.
代码如下:
// namedpipe01server.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <conio.h>
const char* sPipeName = "\\\\.\\pipe\\HolgersTracer";
int main(int argc, char* argv[])
{
HANDLE hPipe = CreateNamedPipe(sPipeName, PIPE_ACCESS_INBOUND, PIPE_TYPE_BYTE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 0, 0, 200, NULL);
if (!ConnectNamedPipe(hPipe, NULL))
return 0;
printf("Pipe created.\r\n");
DWORD nReaded = 0;
char buffer[512];
while (ReadFile(hPipe, buffer, sizeof(buffer)-1, &nReaded, NULL))
{
buffer[nReaded] = 0;
printf(buffer);
printf("\r\n");
}
printf("Press any key to continue\r\n");
getch();
return 0;
}
运行服务器后,接下来是写客户端.
代码如下:
// namedpipe01.cpp : Defines the entry point for the console application.
//
#include <conio.h>
#include <windows.h>
#include <stdio.h>
char* sPipeName = "\\\\.\\pipe\\HolgersTracer";
char sbuf[8] = "1234567";
int main()
{
HANDLE hPipe = NULL;
hPipe = CreateFile(sPipeName, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hPipe == INVALID_HANDLE_VALUE)
{
printf("Error creating.\r\n");
return 0;
}
DWORD nWritten = 0;
if (WriteFile(hPipe, (BYTE*)sbuf, 8, &nWritten, NULL) == FALSE)
{
printf("Error writing.\r\n");
return 0;
}
printf("Completed.\r\n");
}
本人虽然从事开发多年,但对新技术很感兴趣,如果有错误,敬请指出,万分感激.
QQ:250947302
E-mail:cyin8@126.com