多进程C#中的管道通信实现

发布时间:2024-09-13 17:36:39 作者:小樊
来源:亿速云 阅读:108

在C#中,可以使用System.IO.Pipes命名空间中的类来实现管道通信

服务器端代码:

using System;
using System.IO.Pipes;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var server = new NamedPipeServerStream("MyPipe"))
        {
            Console.WriteLine("Waiting for client connection...");
            await server.WaitForConnectionAsync();
            Console.WriteLine("Client connected.");

            var buffer = new byte[1024];
            var readBytes = await server.ReadAsync(buffer, 0, buffer.Length);
            var message = Encoding.UTF8.GetString(buffer, 0, readBytes);
            Console.WriteLine($"Received message: {message}");

            var response = "Hello from server!";
            var responseBuffer = Encoding.UTF8.GetBytes(response);
            await server.WriteAsync(responseBuffer, 0, responseBuffer.Length);
            Console.WriteLine("Sent response to client.");
        }
    }
}

客户端代码:

using System;
using System.IO.Pipes;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (var client = new NamedPipeClientStream(".", "MyPipe", PipeDirection.InOut))
        {
            Console.WriteLine("Connecting to server...");
            await client.ConnectAsync();
            Console.WriteLine("Connected to server.");

            var message = "Hello from client!";
            var messageBuffer = Encoding.UTF8.GetBytes(message);
            await client.WriteAsync(messageBuffer, 0, messageBuffer.Length);
            Console.WriteLine("Sent message to server.");

            var buffer = new byte[1024];
            var readBytes = await client.ReadAsync(buffer, 0, buffer.Length);
            var response = Encoding.UTF8.GetString(buffer, 0, readBytes);
            Console.WriteLine($"Received response: {response}");
        }
    }
}

这个示例中,服务器端和客户端都使用了异步方法来读取和写入数据。首先,服务器端创建一个NamedPipeServerStream实例并等待客户端连接。客户端使用NamedPipeClientStream连接到服务器。然后,客户端向服务器发送一条消息,服务器接收到消息后回复一条响应。客户端接收到响应后输出到控制台。

推荐阅读:
  1. SpringCloud怎么使用Eureka集群搭建实现高可用服务注册中心
  2. SpringCloud-Eureka自我保护模式以及InstanceID该怎样配置

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:如何利用C#多进程优化Web服务器性能

下一篇:C#多进程中的环境变量隔离

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》