javascript - como - Nodo de difusión múltiple UDP
void(0) javascript href (1)
Ah, encontré este buen truco de reutilizar puertos para direcciones.
"using strict";
const multicast_addr = "224.1.1.1",
bin_addr = "0.0.0.0",
port = 6811;
var udp = require("dgram");
var listener = udp.createSocket({type:"udp4", reuseAddr:true}),
sender = udp.createSocket({type:"udp4", reuseAddr:true});
listener.bind(port, multicast_addr, function(){
listener.addMembership(multicast_addr);
listener.setBroadcast(true);
});
listener.on("message", function (b, other) {
console.log(b.toString().trim());
});
process.stdin.on("data", function (data){
sender.send(data, 0, data.length, port, multicast_addr);
});
Trabajé para que OS X hablara a Ubuntu no VM a través de la red local.
Intento crear un programa de chat basado en múltiples transmisiones UDP, con la idea de que cualquier persona en la red local pueda simplemente abrir y comenzar a escribir y enviar mensajes.
Me imagino que cada cliente necesita dos enchufes, uno para enviar mensajes y otro para recibir mensajes.
En su forma más simple, esto es lo que tengo ahora:
"using strict";
const multicast_addr = "224.1.1.1",
bin_addr = "0.0.0.0",
port = 6811;
var udp = require("dgram");
var listener = udp.createSocket("udp4"),
sender = udp.createSocket("udp4");
listener.bind(port, multicast_addr, function(){
listener.addMembership(multicast_addr);
listener.setBroadcast(true);
});
listener.on("message", function (b, other) {
console.log(b.toString().trim());
});
process.stdin.on("data", function (data){
sender.send(data, 0, data.length, port, multicast_addr);
});
(No importa el eco, esa es la lógica de la aplicación que se construirá en la parte superior)
Esto devolverá el mensaje a la persona que ejecuta el código, pero también lo ejecuté al mismo tiempo en una máquina virtual de Linux en la misma máquina, OS X, pero no vi los mensajes en absoluto.
No estoy seguro si eso significa eso
1) Mi código es incorrecto
2) ¿Las máquinas virtuales tienen la misma red que su máquina host?
3) ¿El código es correcto pero mi enrutador doméstico está bloqueando paquetes de transmisión múltiple?