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

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

DDD
リリース: 2025-01-14 12:44:47
オリジナル
745 人が閲覧しました

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

C# コンソール アプリケーション: 名前付きパイプを使用したプロセス間通信

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

アプリケーション構造

アプリケーション A とアプリケーション B の 2 つのコンソール アプリケーションを構築します。アプリケーション A は通信を開始し、アプリケーション B にメッセージを送信します。アプリケーション B はそれに応じて応答します。

サーバー (アプリケーション B)

  1. 名前付きパイプは NamedPipeServerStream を使用して作成されます。
  2. サーバーは WaitForConnection を使用してクライアント接続を待機します。
  3. StreamReaderStreamWriter は、メッセージの読み取りと書き込みのための通信チャネルを確立します。

サーバーコード例:

<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>
ログイン後にコピー

クライアント (アプリケーション A)

  1. 名前付きパイプ クライアントは、NamedPipeClientStream を使用して作成されます。
  2. クライアントはサーバーに接続します。
  3. データの送受信のために通信チャネルが開かれます。

クライアント コード例:

<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>
ログイン後にコピー

コミュニケーションプロセス

アプリケーション A は、アプリケーション B によって開始された名前付きパイプ サーバーに接続します。メッセージはそれぞれのチャネルを通じて交換されます。 たとえば、アプリケーション A が「Hello World」を送信すると、アプリケーション B はそれを「dlroW olleH」に反転して送り返します。 アプリケーション A では、この逆のメッセージが表示されます。 このループは、アプリケーション A が空のメッセージを送信して終了を通知するまで続きます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート