Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
tnpsrv.c
Abstract:
This program creates a single instance of the pipe \cw\testpipe, awaits for a connection. While a client wants to talk it will echo data back to the client. When the client closes the pipe tnpsrv will wait for another client.
Author:
Colin Watson (ColinW) 19-March-1991
Revision History:
--*/
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
int main( int argc, char *argv[], char *envp[] ) {
HANDLE S1; DWORD Size; DWORD Dummy; CHAR Data[1024];
S1 = CreateNamedPipe("\\\\.\\Pipe\\cw\\testpipe", PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, PIPE_WAIT | PIPE_READMODE_MESSAGE| PIPE_TYPE_MESSAGE, 1, // One instance only
sizeof(Data), sizeof(Data), 0, NULL);
assert(S1 != INVALID_HANDLE_VALUE);
while (1) {
printf("Waiting for connection\n"); if ( FALSE == ConnectNamedPipe( S1, NULL )) { printf("Server ReadFile returned Error %lx\n", GetLastError() ); break; }
while (1) {
printf("Server now Reading\n"); if ( FALSE == ReadFile(S1,Data, sizeof(Data), &Size, NULL) ) { printf("Server ReadFile returned Error %lx\n", GetLastError() ); break; }
printf("Server Reading Done %s\n",Data);
printf("Server Writing\n"); if ( FALSE == WriteFile(S1, Data, Size, &Dummy, NULL) ) { printf("Server WriteFile returned Error %lx\n", GetLastError() ); break; }
printf("Server Writing Done\n"); }
if ( FALSE == DisconnectNamedPipe( S1 ) ) { printf("Server WriteFile returned Error %lx\n", GetLastError() ); break; } }
CloseHandle(S1);
}
|