Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
NamedPipeClientStream é uma classe do .NET Framework que permite a comunicação entre processos (IPC - Inter-Process Communication) no sistema operacional Windows. Esta classe é particularmente útil para permitir que diferentes processos no mesmo computador compartilhem dados de maneira eficiente e segura.
Exemplos:
Primeiro, vamos criar um servidor de pipe nomeado usando a classe NamedPipeServerStream
. Este servidor ficará à escuta de conexões de clientes.
using System;
using System.IO.Pipes;
using System.Text;
using System.Threading.Tasks;
class NamedPipeServer
{
static async Task Main(string[] args)
{
using (var pipeServer = new NamedPipeServerStream("testpipe", PipeDirection.InOut))
{
Console.WriteLine("NamedPipeServerStream criado.");
Console.WriteLine("Aguardando conexão do cliente...");
await pipeServer.WaitForConnectionAsync();
Console.WriteLine("Cliente conectado.");
byte[] buffer = new byte[256];
int bytesRead = await pipeServer.ReadAsync(buffer, 0, buffer.Length);
string message = Encoding.UTF8\.GetString(buffer, 0, bytesRead);
Console.WriteLine("Mensagem recebida do cliente: " + message);
string response = "Mensagem recebida com sucesso!";
byte[] responseBytes = Encoding.UTF8\.GetBytes(response);
await pipeServer.WriteAsync(responseBytes, 0, responseBytes.Length);
Console.WriteLine("Resposta enviada ao cliente.");
}
}
}
Agora, vamos criar um cliente que se conectará ao servidor de pipe nomeado criado anteriormente e enviará uma mensagem.
using System;
using System.IO.Pipes;
using System.Text;
using System.Threading.Tasks;
class NamedPipeClient
{
static async Task Main(string[] args)
{
using (var pipeClient = new NamedPipeClientStream(".", "testpipe", PipeDirection.InOut))
{
Console.WriteLine("Tentando conectar ao servidor...");
await pipeClient.ConnectAsync();
Console.WriteLine("Conectado ao servidor.");
string message = "Olá, servidor!";
byte[] messageBytes = Encoding.UTF8\.GetBytes(message);
await pipeClient.WriteAsync(messageBytes, 0, messageBytes.Length);
Console.WriteLine("Mensagem enviada ao servidor.");
byte[] buffer = new byte[256];
int bytesRead = await pipeClient.ReadAsync(buffer, 0, buffer.Length);
string response = Encoding.UTF8\.GetString(buffer, 0, bytesRead);
Console.WriteLine("Resposta do servidor: " + response);
}
}
}
Para executar os exemplos acima, siga os passos abaixo:
1. Compile o código do servidor e do cliente em arquivos executáveis separados.
2. Execute o servidor primeiro para que ele comece a aguardar conexões.
3. Execute o cliente para que ele se conecte ao servidor e envie uma mensagem.
NamedPipeClientStream é uma ferramenta poderosa para comunicação entre processos no ambiente Windows. Ele permite a troca de dados de maneira eficiente e segura, sendo ideal para aplicações que necessitam de comunicação rápida e confiável entre diferentes processos.