tags:

views:

578

answers:

2

Say a server created a named pipe "myTestPipe". How many clients can connect to "myTestPipe"? From what I have read on the Web, it seems only one client can, but wanted to make sure.

If only one, then it's best to use the blocking WaitForConnection() instead of the Asunchronous method BeginWaitForConnection() as the server will wait until a client process connects and then do the communication?! (no need to worry about other clients to connect)

+1  A: 

You can have more than one client connect to the same named pipe. On Windows, I believe the current limitation is 256 simultaneous connections to a single named pipe, including the server's connection.

(Unfortunately, I can't track down the appropriate MSDN page for reference, but this CPAN pipes reference mentions this limitation.)

Reed Copsey
Thanks for your response.I have a question though: I am implementing a server that receives binary files that are sent by NamedPipeClients through a named pipe. Assume that I have a multi-threaded NamedPipeClient where I can instantiate more than one thread to send files at the same time. How would it be possible for the server to distinguish the source client that has actually sent these bytes? Perhaps my question should be: when more than one client is writing data into the pipe, is it overlapped with others' in such a way you can't tell who sent what?hope it's explained well!thanks again
Derar
There are actually a couple of different options here, including using overlapped I/O, multithreading, or completion routines. MSDN has good documentation (including all 3 options) of handling multiple client connections from a single server here: http://msdn.microsoft.com/en-us/library/aa365594%28VS.85%29.aspx
Reed Copsey
+1  A: 

You actually create one pipe and wait for a connection, and when it connects, create a second one and wait on it.

For each pipe you create and wait for connection on, you get at most one connection (at a time - you can recycle them if they are request/response/close style).

Thus, each connection is 1-to-1, like a socket or other stream.

Joshua Muskovitz