Nmpipe.c is a simple, console named pipe sample demonstrating the "thread per client" method of a named pipe client/server architecture. This sample application demonstrates how to create and connect clients from a server application, and how to wait for and connect to pipes from a client application. To compile the application for simultaneous reading and writing, uncomment the "#define OVERPAPED_IO TRUE" statement in nmpipe.c. For one-way pipe operations, uncomment the "#define OVERLAPPED_IO FALSE" statement. The sample can be started either as a server or as a client. To start the sample as the server, use the /s parameter. To start the sample as a client, use /c. Following either /s or /c should be a string to write to the pipe. For example, to start a server and client: nmpipe /s "hello from the server " nmpipe /c "client " will cause the client and server to write their respective strings to each other over the named pipe. If OVERLAPPED_IO is defined as FALSE, then the client will only write and the server will only read. Note that Windows 95 cannot create named pipes, so the /s (run as server) flag will cause errors on the CreateNamedPipe call under Windows 95. In addition, Windows 95 does not support overlapped I/O on named pipes; if the app is compiled with OVERLAPPED_IO defined as TRUE, errors will result from the CreateFile calls, which use the FILE_FLAG_OVERLAPPED flag in this case. So be sure to define OVERLAPPED_IO as FALSE before compiling on Windows 95.