Heim >Backend-Entwicklung >C++ >Wie können benannte Pipes die Kommunikation zwischen Prozessen in einer C#-Konsolenanwendung erleichtern?

Wie können benannte Pipes die Kommunikation zwischen Prozessen in einer C#-Konsolenanwendung erleichtern?

DDD
DDDOriginal
2025-01-14 12:44:47794Durchsuche

How Can Named Pipes Facilitate Inter-Process Communication in a C# Console Application?

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)

  1. Eine benannte Pipe wird mit NamedPipeServerStream erstellt.
  2. Der Server wartet auf eine Client-Verbindung mit WaitForConnection.
  3. 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)

  1. Ein benannter Pipe-Client wird mit NamedPipeClientStream erstellt.
  2. Der Client stellt eine Verbindung zum Server her.
  3. Kommunikationskanäle werden zum Senden und Empfangen von Daten geöffnet.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn