Aquí está la información de algún código que estoy usando actualmente en una aplicación de producción que funciona (tenemos un poco más allí para manejar el caso donde el cliente está ejecutando aplicaciones de servidor en una instalación independiente). Su trabajo es recibir notificaciones udp de que los mensajes están listos para su procesamiento. Como lo mencionó Adam Alexander, su único problema es que debe usar IPAddress.Any, en lugar de IPAddress.Broadcast. Solo usaría IPAddress.Broadcast cuando quisiera Enviar un paquete UDP de difusión.
configurar el cliente UDP
this.broadcastAddress = new IPEndPoint(IPAddress.Any, 1234);
this.udpClient = new UdpClient();
this.udpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
this.udpClient.ExclusiveAddressUse = false; // only if you want to send/receive on same machine.
Y para desencadenar el inicio de una asíncrono recibidos mediante una devolución de llamada.
this.udpClient.Client.Bind(this.broadcastAddress);
this.udpClient.BeginReceive(new AsyncCallback(this.ReceiveCallback), null);
Esperemos que esto ayuda, usted debe ser capaz de adaptarlo a trabajar de forma sincrónica sin demasiado problema. Muy similar a lo que estás haciendo. Si sigues recibiendo el error después de esto, entonces algo más debe estar usando el puerto que estás tratando de escuchar.
Entonces, para aclarar.
IPAddress.Any = Se utiliza para recibir. Quiero escuchar un paquete que llegue a cualquier dirección IP. IPAddress.Broadcast = Se utiliza para enviar. Quiero enviar un paquete a cualquiera que esté escuchando.
hola, en mi caso me sale un error al transmitir en la misma máquina. has tenido este error, ho cani resuelve este problema – Smith