Maison >développement back-end >C++ >Comment les canaux nommés peuvent-ils faciliter la communication inter-processus dans une application console C# ?
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)
NamedPipeServerStream
.WaitForConnection
.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>
Client (Application A)
NamedPipeClientStream
.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>
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!