Writing simple named pipes server in C#

I solved a little problem last night when playing with named pipes. I created named pipe that writes all output to file. Named pipe is opened for all users in machine. In this posting I will show you simple class that works as pipe server.

In .NET Framework languages we can use System.IO.Pipes namespace classes to work with named pipes. Here is my simple pipe server that writes all client output to file.

public class MyPipeServer
public void
var sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null
var rule = new PipeAccessRule(sid, PipeAccessRights
var sec = new PipeSecurity

using (NamedPipeServerStream pipeServer = new NamedPipeServerStream
              ("testpipe", PipeDirection
.InOut, 100,
PipeTransmissionMode.Byte, PipeOptions
.None, 0, 0, sec))

read = 0;
var bytes = new byte

using (var file = File.Open(@"c:\tmp\myfile.dat", FileMode
while ((read = pipeServer.Read(bytes, 0, bytes.Length)) > 0)
                    file.Write(bytes, 0, read);

Real-life pipe scenarios are usually more complex but this simple class is good to get things running like they should be.

Gunnar Peipman

Gunnar Peipman is ASP.NET, Azure and SharePoint fan, Estonian Microsoft user group leader, blogger, conference speaker, teacher, and tech maniac. Since 2008 he is Microsoft MVP specialized on ASP.NET.

    One thought on “Writing simple named pipes server in C#

    Leave a Reply

    Your email address will not be published. Required fields are marked *