javascript node.js establecer una conexión socket UDP
Procedente de esta página,
https://nodejs.org/api/dgram.html#class-dgramsocket
Tomé el control de este ejemplo:
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
server.on('error', (err) => {
console.log(`error del servidor:\n${err.stack}`);
server.close();
});
server.on('message', (msg, rinfo) => {
console.log(`el servidor recibió: ${msg} desde ${rinfo.address}:${rinfo.port}`);
});
server.on('listening', () => {
const address = server.address();
console.log(`el servidor está escuchando en ${address.address}:${address.port}`);
});
server.bind(41234);
// Imprime: el servidor está escuchando en 0.0.0.0:41234
server.bind()
también funcionaría, luego toma un puerto libre, supongo.
Pero el ejemplo no funciona, la respuesta del cliente a 0.0.0.0 no sería recibida en este host.
Entonces cambié a
server.bind(65000, "192.168.0.1");
Pero junto con la dirección IP, las interfaces me obligan a especificar un puerto. ¿Cómo puedo omitir esto?
Gracias
davy.ai
Para omitir especificar un puerto al enlazar a una dirección IP específica, puedes pasar
0
como segundo argumento aserver.bind()
. Esto le indicará al sistema operativo que elija un puerto disponible al azar para el socket. Por ejemplo, podrías usar:Esto enlazará a la interfaz
192.168.0.1
y se asignará un puerto disponible al azar. Puedes obtener el puerto asignado usandoserver.address().port
en el callback del evento'listening'
.