📅  最后修改于: 2023-12-03 14:44:40.279000             🧑  作者: Mango
Node.js 的 socket.setMulticastLoopback() 方法用于设置是否将多播数据包发送回给发送者。默认情况下,此选项启用,意味着发送的多播数据包将会被发送者接收到。
socket.setMulticastLoopback(flag)
const dgram = require('dgram');
const socket = dgram.createSocket('udp4');
const multicastAddress = '224.0.0.114';
socket.bind(() => {
socket.setMulticastLoopback(false); // 禁用多播回传
console.log(`Socket is listening on ${socket.address().address}:${socket.address().port}`);
socket.addMembership(multicastAddress);
});
socket.on('message', (message, rinfo) => {
console.log(`Received message from ${rinfo.address}:${rinfo.port} - ${message}`);
});
const message = new Buffer('Hello, multicast!');
socket.send(message, 0, message.length, 8080, multicastAddress, () => {
console.log('Message sent');
});
在上述示例中,创建了一个 UDP socket,并使用 socket.setMulticastLoopback(false)
禁用了多播回传功能。之后,发送了一个消息到指定的多播地址,并通过 socket.on('message')
监听接收到的消息。
socket.setMulticastLoopback()
方法必须在调用 socket.addMembership()
方法前调用。