Tengo 2 programas, 1 para enviar un mensaje de difusión UDP y 1 que está escuchando esta transmisión. Mi problema es que a veces cuando envío una transmisión, el receptor recibe 2 mensajes. ¿Por qué?Envío de difusión UDP, recepción de mensajes múltiples
código del receptor: Código
public class Receiver {
private readonly UdpClient udp = new UdpClient(15000);
private void StartListening()
{
this.udp.BeginReceive(Receive, new object());
}
private void Receive(IAsyncResult ar)
{
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 15000);
byte[] bytes = udp.EndReceive(ar, ref ip);
string message = Encoding.ASCII.GetString(bytes);
StartListening();
}
}
remitente:
public class Sender {
public void Send() {
UdpClient client = new UdpClient();
IPEndPoint ip = new IPEndPoint(IPAddress.Broadcast, 15000);
byte[] bytes = Encoding.ASCII.GetBytes("Foo");
client.Send(bytes, bytes.Length, ip);
client.Close();
}
}
hola. Quería usar tu código para la transferencia de archivos UDP. ¡pero no sé qué hacer con la parte de recepción! ¿cómo debería ser implementado? ¿Cómo va a comenzar a obtener cosas de la red? – Shamim
@Shamim, hay muchos recursos en la web, un poco de google debería ayudar. Busque ejemplos de servidor/cliente. –
'IPEndPoint ip = new IPEndPoint (IPAddress.Any, 15000);' puede ser 'IPEndPoint ip = null;' - no es una estructura. Su uso en el método 'EndReceive()' es definir el remitente. Poblando con cualquier cosa es un poco engañoso. – maxp