首頁 > 後端開發 > C++ > 命名管道如何促進簡單 C# 控制台應用程式中的進程間通訊?

命名管道如何促進簡單 C# 控制台應用程式中的進程間通訊?

Susan Sarandon
發布: 2025-01-14 12:46:48
原創
571 人瀏覽過

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

示範命名管道的簡單 C# 控制台應用程式

命名管道為單一系統內的進程間通訊(IPC)提供了一種強大的方法。 此範例展示了一個基本的 C# 控制台應用程序,其中兩個進程使用命名管道交換訊息。

應用結構

該應用程式包含兩個程式:一個程式透過向第二個程式發送訊息來發起通信,然後第二個程式做出回應。兩者同時運作以進行連續的訊息交換。

程式碼實作

以下 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板