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

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

Susan Sarandon
Freigeben: 2025-01-14 12:46:48
Original
570 Leute haben es durchsucht

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

Eine einfache C#-Konsolenanwendung zur Demonstration benannter Pipes

Named Pipes bieten eine robuste Methode für die Interprozesskommunikation (IPC) innerhalb eines einzelnen Systems. Dieses Beispiel zeigt eine einfache C#-Konsolenanwendung, bei der zwei Prozesse Nachrichten über benannte Pipes austauschen.

Bewerbungsstruktur

Die Anwendung besteht aus zwei Programmen: Das eine initiiert die Kommunikation, indem es eine Nachricht an das zweite sendet, das dann antwortet. Beide laufen gleichzeitig für einen kontinuierlichen Nachrichtenaustausch.

Code-Implementierung

Der folgende C#-Code demonstriert die Implementierung:

<code class="language-csharp">using System;
using System.IO;
using System.IO.Pipes;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleAppIPC
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initiate the server process
            StartServer();
            Task.Delay(1000).Wait(); // Brief delay to ensure server is ready

            // Client-side connection and communication
            using (var client = new NamedPipeClientStream("PipesOfPiece"))
            {
                client.Connect();
                using (var reader = new StreamReader(client))
                using (var writer = new StreamWriter(client))
                {
                    while (true)
                    {
                        string input = Console.ReadLine();
                        if (string.IsNullOrEmpty(input)) break;
                        writer.WriteLine(input);
                        writer.Flush();
                        Console.WriteLine(reader.ReadLine());
                    }
                }
            }
        }

        static void StartServer()
        {
            Task.Factory.StartNew(() =>
            {
                using (var server = new NamedPipeServerStream("PipesOfPiece"))
                {
                    server.WaitForConnection();
                    using (var reader = new StreamReader(server))
                    using (var writer = new StreamWriter(server))
                    {
                        while (true)
                        {
                            string line = reader.ReadLine();
                            writer.WriteLine(string.Join("", line.Reverse()));
                            writer.Flush();
                        }
                    }
                }
            });
        }
    }
}</code>
Nach dem Login kopieren

Betriebsablauf

Der Client stellt eine Verbindung zur benannten Pipe „PipesOfPiece“ her und stellt eine Verbindung mit dem Server her. Nachrichten werden über ein StreamWriter gesendet und über ein StreamReader empfangen. In diesem Beispiel kehrt der Server die empfangene Nachricht um, bevor er sie an den Client zurücksendet, was ein einfaches Kommunikationsmuster veranschaulicht. Der Client zeigt dann die umgekehrte Meldung an.

Das obige ist der detaillierte Inhalt vonWie können Named Pipes die Kommunikation zwischen Prozessen in einer einfachen C#-Konsolenanwendung erleichtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage