Heim >Backend-Entwicklung >C++ >Wie können benannte Pipes die Kommunikation zwischen Prozessen in einer C#-Konsolenanwendung erleichtern?
C#-Konsolenanwendung: Interprozesskommunikation mit benannten Pipes
Named Pipes bieten eine robuste und effiziente Methode für die Interprozesskommunikation (IPC). Dieses Beispiel zeigt eine C#-Konsolenanwendung, die Named Pipes verwendet, um Nachrichten zwischen zwei Prozessen auszutauschen.
Bewerbungsstruktur
Wir erstellen zwei Konsolenanwendungen: Anwendung A und Anwendung B. Anwendung A initiiert die Kommunikation und sendet eine Nachricht an Anwendung B, die entsprechend reagiert.
Server (Anwendung B)
NamedPipeServerStream
erstellt.WaitForConnection
.StreamReader
und StreamWriter
Kommunikationskanäle zum Lesen und Schreiben von Nachrichten einrichten.Servercode-Beispiel:
<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>
Kunde (Anwendung A)
NamedPipeClientStream
erstellt.Client-Code-Beispiel:
<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>
Kommunikationsprozess
Anwendung A stellt eine Verbindung zu dem von Anwendung B initiierten Named-Pipe-Server her. Nachrichten werden über ihre jeweiligen Kanäle ausgetauscht. Wenn beispielsweise Anwendung A „Hello World“ sendet, wandelt Anwendung B dies in „dlroW olleH“ um und sendet es zurück. Anwendung A zeigt diese umgekehrte Meldung an. Die Schleife wird fortgesetzt, bis Anwendung A eine leere Nachricht sendet, um die Beendigung zu signalisieren.
Das obige ist der detaillierte Inhalt vonWie können benannte Pipes die Kommunikation zwischen Prozessen in einer C#-Konsolenanwendung erleichtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!