Vale como ejemplo crearemos dos aplicaciones a modo de que
una será una servidor en el que podremos redactar mensajes que se enviaran a
los clientes. Y la otra será la aplicación cliente que recibirá estos mensajes.
Empecemos creando la interfaz visual que tendrá la
aplicación que hará de servidor. Y es mi caso tendrá un aspecto visual como
este.
Ahora nos iremos al evento Click() de nuestro botón. Que
será una cosa parecida a esto:
private void btoEnviar_Click(object sender, EventArgs e)
{
}
Para empezar a utilizar PIPE lo primero que tendremos que
hacer es agregar el espacio de nombre que contienen estos objetos para ello
tendremos agregar el espacio de nombre “System.IO.Pipes”.
El objeto que vamos a utilizar para realizar el envió se
llama “NamedPipeClientStream” el código de nuestro programa servidor quedaría
así:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Pipes;
namespace ServidorPIPE
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btoEnviar_Click(object sender, EventArgs e)
{
var ServidorEnvio = new NamedPipeClientStream("ServerPIPE");
// Para conectar con el servidor PIPE
// que va ser nuestro cliente
que esta escuchando
ServidorEnvio.Connect(60);
// Creamos un buffer y le paso el valor de
nuestro textbox
byte[] buffer = ASCIIEncoding.ASCII.GetBytes(txtMensaje.Text);
// Lo enviamos
ServidorEnvio.Write(buffer, 0,
buffer.Length);
ServidorEnvio.Close();
}
}
}
Ahora realizaremos el que va ser nuestro cliente una captura
de la interfaz.
Ahora el código para nuestro cliente que recibirá los
mensajes:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Pipes;
namespace ClientePIPE
{
public partial class Form1 : Form
{
public
Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
while
(true)
{
var ClientePIPE = new NamedPipeServerStream("ServerPIPE");
// Bucle para esperar respuestas
ClientePIPE.WaitForConnection();
byte[] buffer
= new byte[255];
ClientePIPE.Read(buffer, 0,
255);
// Se asigna el valor
txtMensaje.Text = ASCIIEncoding.ASCII.GetString(buffer);
// Refresca los datos
Refresh();
ClientePIPE.Close();
}
}
}
}
Un video del ejemplo funcionando.
Un saludo.
bonjour,
ResponderEliminardommage de n'avoir pas traitre un exemple de de pipe nommé in/out avec un échange de données dans les deux sens. Si tu as un exemples n'hésite pas à me le faire savoir