Hi lads and lasses, I have just started looking into communication between services and GUI apps. I decided to use Named Pipes but upon reading a lot of documentation and web examples etc etc it seems that after every message is sent and received you have to setup another server/client to get the next message???
Is this the case? What I wanted was a TCP like connection (yes I know that is an option) where I can set a server listening then connect a client and then through the lifetime of the app just pass messages between the two apps (service and GUI).
You're not creating a new listener for each and every message.
You would normally create a listener that waits for connections. Once that connection request arrives, you create a pipe server for that client. That way, you can have multiple clients connected to the service at the same time and no interfere with each other.
Now, if you just want the local machine applications to talk to the server, then the service only has to listen for one connection. It doesn't have to spawn a new server object for each incomming connection.
Bad example. That one does do what you siad, but it was written as an ad-hoc example to demonstrate the new Pipe classes. It's NOT meant as a tutorial on how to use the classes in production.
That example actually comes straight from the MSDN documentation, which uses very simplistic examples on using specific classes. That example, and many many more in MSDN, is by no means the definitive source on how to properly implement a server using pipes.
An implementation that would look closer to a real-world example is this[^].