首頁 > 後端開發 > 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)提供了一種健壯且高效的方法。此範例示範了一個使用命名管道在兩個進程之間交換訊息的 C# 控制台應用程式。

應用結構

我們將建立兩個控制台應用程式:應用程式 A 和應用程式 B。應用程式 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中文網其他相關文章!

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