Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| //<snippet01> | |
| using System; | |
| using System.IO; | |
| using System.IO.Pipes; | |
| using System.Diagnostics; | |
| class PipeServer | |
| { | |
| static void Main() | |
| { | |
| Process pipeClient = new Process(); | |
| pipeClient.StartInfo.FileName = "pipeClient.exe"; | |
| using (AnonymousPipeServerStream pipeServer = | |
| new AnonymousPipeServerStream(PipeDirection.Out, | |
| HandleInheritability.Inheritable)) | |
| { | |
| // Show that anonymous pipes do not support Message mode. | |
| try | |
| { | |
| Console.WriteLine("[SERVER] Setting ReadMode to \"Message\"."); | |
| pipeServer.ReadMode = PipeTransmissionMode.Message; | |
| } | |
| catch (NotSupportedException e) | |
| { | |
| Console.WriteLine("[SERVER] Exception:\n {0}", e.Message); | |
| } | |
| Console.WriteLine("[SERVER] Current TransmissionMode: {0}.", | |
| pipeServer.TransmissionMode); | |
| // Pass the client process a handle to the server. | |
| pipeClient.StartInfo.Arguments = | |
| pipeServer.GetClientHandleAsString(); | |
| pipeClient.StartInfo.UseShellExecute = false; | |
| pipeClient.Start(); | |
| pipeServer.DisposeLocalCopyOfClientHandle(); | |
| try | |
| { | |
| // Read user input and send that to the client process. | |
| using (StreamWriter sw = new StreamWriter(pipeServer)) | |
| { | |
| sw.AutoFlush = true; | |
| // Send a 'sync message' and wait for client to receive it. | |
| sw.WriteLine("SYNC"); | |
| pipeServer.WaitForPipeDrain(); | |
| // Send the console input to the client process. | |
| Console.Write("[SERVER] Enter text: "); | |
| sw.WriteLine(Console.ReadLine()); | |
| } | |
| } | |
| // Catch the IOException that is raised if the pipe is broken | |
| // or disconnected. | |
| catch (IOException e) | |
| { | |
| Console.WriteLine("[SERVER] Error: {0}", e.Message); | |
| } | |
| } | |
| pipeClient.WaitForExit(); | |
| pipeClient.Close(); | |
| Console.WriteLine("[SERVER] Client quit. Server terminating."); | |
| } | |
| } | |
| //</snippet01> |