javascript node.js networking udp broadcast

javascript - Recepción de paquetes emitidos cuando se escucha un puerto específico



node.js networking (2)

El Javadoc para java.net.DatagramSocket dice:

Para recibir paquetes de difusión, un DatagramSocket debe estar vinculado a la dirección de comodín. En algunas implementaciones, los paquetes de difusión también se pueden recibir cuando un DatagramSocket está vinculado a una dirección más específica.

Esta es una indicación bastante clara de que el comportamiento depende de la plataforma, por lo que los sockets Javascript se verían afectados de la misma manera.

De acuerdo con mis pruebas, Windows Vista 64 no se comporta como se describe en la segunda oración (es decir, no recibe transmisiones a menos que esté vinculado a INADDR_ANY).

al configurar un socket a través de dgram.createSocket(''udp4''); y SIN vincularlo a un puerto específico, sí recibo paquetes emitidos que fueron enviados a 255.255.255.255, pero cuando estoy vinculando el mismo socket a la dirección IP específica de mi interfaz this.server.bind(67, host); NO recibiré estos paquetes emitidos. ¿Es este un comportamiento normal?


Sí, este es el comportamiento esperado porque, sin un puerto o interfaz, dgram.createSocket ():

enlazar a la dirección "all interfaces" en un puerto al azar (hace lo correcto para los sockets udp4 y udp6).

- de la documentación de API de dgram en nodejs.org

que le permite capturar paquetes de difusión a cualquier puerto en cualquier interfaz disponible.

Al probar tanto una interfaz como un puerto para createSocket (), se limita a capturar únicamente paquetes que se han transmitido a la red vinculada a la interfaz especificada en el puerto especificado.

Debe tener en cuenta que para recibir transmisiones a una interfaz específica, deberán enviarse a la dirección de difusión en / para la red a la que sirve esa interfaz.

Entonces, si su red es:

10.1.1.0

con una máscara de red de:

255.255.255.252

cual es también:

10.1.1.0/29 (CIDR notation)

la dirección de transmisión correcta es:

10.1.1.7

Dada su dirección de red y máscara de red, la "calculadora de red y dirección IP " de tuxgraphics.org es una herramienta que puede usar para identificar la dirección de transmisión correcta para su red específica.