Ho 2 programmi, 1 per inviare un messaggio broadcast UDP e 1 che sta ascoltando questa trasmissione. Il mio problema è che a volte quando invio una trasmissione, il destinatario riceve 2 messaggi. Perché?Invio trasmissione UDP, ricezione di più messaggi
Codice Ricevitore: Codice
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();
}
}
mittente:
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();
}
}
ciao. Volevo usare il tuo codice per il trasferimento di file UDP. ma non so cosa fare con la parte Ricevi! come dovrebbe essere implementato? come comincerà a prendere roba dalla rete? – Shamim
@Shamim, ci sono molte risorse sul web, un po 'di googling dovrebbe aiutare. Cerca esempi server/client. –
'IPEndPoint ip = new IPEndPoint (IPAddress.Any, 15000);' può essere solo 'IPEndPoint ip = null;' - non è una struttura. Il suo uso nel metodo 'EndReceive()' è di definire il mittente. Popolarlo con qualcosa è un po 'fuorviante. – maxp