首页 > 后端开发 > 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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板