ホームページ >バックエンド開発 >C++ >名前付きパイプを使用すると、単純な C# コンソール アプリケーションでのプロセス間通信をどのように促進できるでしょうか?

名前付きパイプを使用すると、単純な C# コンソール アプリケーションでのプロセス間通信をどのように促進できるでしょうか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-14 12:46:48623ブラウズ

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

名前付きパイプをデモするシンプルな C# コンソール アプリケーション

名前付きパイプは、単一システム内でプロセス間通信 (IPC) のための堅牢な方法を提供します。 この例では、2 つのプロセスが名前付きパイプを使用してメッセージを交換する基本的な C# コンソール アプリケーションを示します。

アプリケーション構造

アプリケーションは 2 つのプログラムで構成されています。1 つはメッセージを送信して通信を開始し、もう 1 つは応答します。継続的なメッセージ交換のために両方が同時に実行されます。

コードの実装

次の C# コードは実装を示しています。

<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>

操作の流れ

クライアントは名前付きパイプ「PipesOfPiece」に接続し、サーバーとの接続を確立します。 メッセージは StreamWriter を介して送信され、StreamReader を使用して受信されます。 この例では、サーバーは受信したメッセージを元に戻してからクライアントに送り返します。これは単純な通信パターンを示しています。 その後、クライアントは反転メッセージを表示します。

以上が名前付きパイプを使用すると、単純な C# コンソール アプリケーションでのプロセス間通信をどのように促進できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。