命名管道--简单的客户服务器通信

 

// Server.cpp #include <windows.h> #include <stdio.h> void main(void) { HANDLE PipeHandle; DWORD BytesRead; CHAR buffer[256]; if ( ( PipeHandle = CreateNamedPipe("////.//Pipe//Jim", PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE, 1, 0, 0, 1000, NULL ) ) == INVALID_HANDLE_VALUE ) { printf( "CreateNamedPipe failed with error %d/n", GetLastError() ); return; } printf( "Server is now running/n" ); if ( ConnectNamedPipe(PipeHandle, NULL ) == 0 ) { printf( " ConnectNamedPipe failed with error %d/n", GetLastError() ); CloseHandle( PipeHandle ); return; } if ( ReadFile(PipeHandle, buffer, sizeof(buffer), &BytesRead, NULL ) <= 0 ) { printf( " ReadFile failed with error %d/n", GetLastError() ); CloseHandle( PipeHandle ); return; } printf("%.*s/n", BytesRead, buffer ); if ( DisconnectNamedPipe(PipeHandle) == 0 ) { printf( "DisconnectNamedPipe failed with error %d/n", GetLastError() ); return; } printf( " Is Server ending" ); CloseHandle( PipeHandle ); }  

 

 

// Client.cpp #include <windows.h> #include <stdio.h> #define PIPE_NAME "////.//Pipe//jim" void main(void) { HANDLE PipeHandle; DWORD BytesWritten; if(WaitNamedPipe( PIPE_NAME, NMPWAIT_WAIT_FOREVER ) == 0 ) { printf( "waitnamedpipe failed with error %d/n", GetLastError() ); return; } // Create the named pipe file handle if((PipeHandle = CreateFile( PIPE_NAME, GENERIC_READ | GENERIC_WRITE, 0, ( LPSECURITY_ATTRIBUTES ) NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE ) NULL ) ) == INVALID_HANDLE_VALUE ) { printf( "Create file failed with error %d/n", GetLastError() ); return; } if ( WriteFile( PipeHandle, "this is a test", 14, &BytesWritten, NULL ) == 0 ) { printf(" WriteFile failed with error %d/n", GetLastError() ); return; } printf("Wrote %d bytes", BytesWritten ); CloseHandle( PipeHandle ); } 

你可能感兴趣的:(命名管道--简单的客户服务器通信)