No se puede vincular a la dirección de difusión en el cliente - Java / Scala


Answers

No puede enlazar a la dirección de difusión. La pregunta no tiene sentido. No es necesario vincular nada para enviar, y para recibirlo debe vincularse a 0.0.0.0 en la mayoría de los casos.

Question

Intento escribir un latido simple de UDP para transmitir a todos los nodos de escucha en un puerto determinado a través de mi subred.

Tengo problemas para crear / enlazar el cliente DatagramSocket. Estoy intentando un código como este:

// My IP is 192.168.201.57, so I'm using 192.168.201.255 for broadcast.  Right?
val socket = new DatagramSocket(9099, InetAddress.getByName("192.168.201.255"))

Esto produjo una excepción: java.net.BindException: no se puede asignar la dirección solicitada.

También probé 255.255.255.255 con el mismo resultado. También intenté algo así basado en algo que leí en otra publicación:

val socket = new DatagramSocket(null)
socket.bind( new InetSocketAddress(broadcastIp, port) )  // where I tried several broadcastIp values

Esto también dio la misma excepción. También debería agregar que probé diferentes valores de puerto y me aseguré de que nada más en la máquina esté usando los puertos que estoy intentando.