Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade

Como criar e utilizar NamedPipeClientStream no Windows

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:

Exemplo 1: Criando um servidor de pipe nomeado

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.");
        }
    }
}

Exemplo 2: Criando um cliente de pipe nomeado

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);
        }
    }
}

Executando os exemplos

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.

Considerações finais

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.

To share Download PDF

Gostou do artigo? Deixe sua avaliação!
Sua opinião é muito importante para nós. Clique em um dos botões abaixo para nos dizer o que achou deste conteúdo.