抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

管道是一种进程间通信的机制,它可以用于在两个进程之间传递数据。在C#中,使用System.IO.Pipes命名空间提供的NamedPipeServerStreamNamedPipeClientStream类可以很容易地实现管道通信。

服务器端

首先,在服务器端,我们需要创建一个NamedPipeServerStream对象,并指定管道的名称和方向(读、写或双向)。下面是一个创建双向管道的例子:

NamedPipeServerStream server = new NamedPipeServerStream("my_pipe", PipeDirection.InOut);

接下来,我们需要使用WaitForConnection方法等待客户端连接。一旦连接建立,我们就可以使用StreamReaderStreamWriter对象来读取和写入数据。

server.WaitForConnection();
StreamReader reader = new StreamReader(server);
StreamWriter writer = new StreamWriter(server);

现在,我们可以使用reader对象读取来自客户端的数据,使用writer对象向客户端发送数据。

string data = reader.ReadLine();
writer.WriteLine("Hello, " + data);

当完成通信后,我们需要调用Close方法关闭管道。

server.Close();

客户端

在客户端,我们需要创建一个NamedPipeClientStream对象,并指定要连接的服务器的名称和管道的名称和方向。下面是一个连接到上述服务器的例子:

NamedPipeClientStream client = new NamedPipeClientStream(".", "my_pipe", PipeDirection.InOut);
client.Connect();
StreamReader reader = new StreamReader(client);
StreamWriter writer = new StreamWriter(client);

现在,我们可以使用writer对象向服务器发送数据,使用reader对象读取来自服务器的数据。

writer.WriteLine("World");
string response = reader.ReadLine();

当完成通信后,我们需要调用Close方法关闭管道。

client.Close();

这就是使用C#管道在进程间进行双向通信的基本方法。可以通过使用不同的管道名称和方向来实现更复杂的通信方案。