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中文網其他相關文章!