Maison > développement back-end > C++ > Comment les canaux nommés peuvent-ils faciliter la communication inter-processus dans une application console C# ?

Comment les canaux nommés peuvent-ils faciliter la communication inter-processus dans une application console C# ?

DDD
Libérer: 2025-01-14 12:44:47
original
793 Les gens l'ont consulté

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

Application console C# : communication inter-processus avec des canaux nommés

Les canaux nommés fournissent une méthode robuste et efficace de communication inter-processus (IPC). Cet exemple montre une application console C# utilisant des canaux nommés pour échanger des messages entre deux processus.

Structure de candidature

Nous allons créer deux applications console : l'application A et l'application B. L'application A initie la communication et envoie un message à l'application B, qui répond en conséquence.

Serveur (Application B)

  1. Un canal nommé est créé en utilisant NamedPipeServerStream.
  2. Le serveur attend une connexion client en utilisant WaitForConnection.
  3. StreamReader et StreamWriter établissent des canaux de communication pour la lecture et l'écriture des messages.

Exemple de code de serveur :

<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>
Copier après la connexion

Client (Application A)

  1. Un client de canal nommé est créé à l'aide de NamedPipeClientStream.
  2. Le client se connecte au serveur.
  3. Les canaux de communication sont ouverts pour l'envoi et la réception de données.

Exemple de code client :

<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>
Copier après la connexion

Processus de communication

L'application A se connecte au serveur de canal nommé initié par l'application B. Les messages sont échangés via leurs canaux respectifs. Par exemple, si l'application A envoie « Hello World », l'application B l'inverse en « dlroW olleH » et le renvoie. L'application A affiche ce message inversé. La boucle continue jusqu'à ce que l'application A envoie un message vide pour signaler la fin.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal