C# 控制台应用程序:与命名管道的进程间通信
命名管道为进程间通信(IPC)提供了一种健壮且高效的方法。此示例演示了一个使用命名管道在两个进程之间交换消息的 C# 控制台应用程序。
应用程序结构
我们将构建两个控制台应用程序:应用程序 A 和应用程序 B。应用程序 A 发起通信,向应用程序 B 发送消息,应用程序 B 做出相应响应。
服务器(应用程序 B)
NamedPipeServerStream
创建的。WaitForConnection
等待客户端连接。StreamReader
和 StreamWriter
建立消息读写的通信通道。服务器代码示例:
<code class="language-csharp">Task.Factory.StartNew(() => { using (var server = new NamedPipeServerStream("MyPipe")) { server.WaitForConnection(); using (var reader = new StreamReader(server)) using (var writer = new StreamWriter(server)) { while (true) { string message = reader.ReadLine(); if (string.IsNullOrEmpty(message)) break; //Handle potential termination string reversedMessage = new string(message.Reverse().ToArray()); writer.WriteLine(reversedMessage); writer.Flush(); } } } });</code>
客户端(应用程序 A)
NamedPipeClientStream
创建命名管道客户端。客户端代码示例:
<code class="language-csharp">using (var client = new NamedPipeClientStream(".", "MyPipe", PipeDirection.InOut)) { client.Connect(); using (var reader = new StreamReader(client)) using (var writer = new StreamWriter(client)) { while (true) { Console.WriteLine("Enter message (or leave blank to exit):"); string input = Console.ReadLine(); if (string.IsNullOrEmpty(input)) break; writer.WriteLine(input); writer.Flush(); Console.WriteLine($"Received: {reader.ReadLine()}"); } } }</code>
沟通流程
应用程序A连接到应用程序B发起的命名管道服务器。通过各自的通道交换消息。 例如,如果应用程序 A 发送“Hello World”,应用程序 B 将其反转为“dlroW olleH”并将其发回。 应用程序 A 显示此相反的消息。 循环继续,直到应用程序 A 发送一条空消息来表示终止。
以上是命名管道如何促进 C# 控制台应用程序中的进程间通信?的详细内容。更多信息请关注PHP中文网其他相关文章!