📅  最后修改于: 2023-12-03 14:44:40.235000             🧑  作者: Mango
socket.dropMembership()
方法用于从多播组中删除一个主机。这个方法仅仅用于 UDP 类型的 Socket,而且仅仅在主机以前添加到一个多播组中时可以调用。
以下是 socket.dropMembership()
方法的语法:
socket.dropMembership(multicastAddress[, multicastInterface])
multicastAddress
:被删除的多播组IP地址,必须是一个合法的 IPv4 或 IPv6 地址。
multicastInterface
:可选,代表网络接口 IP 的字符串或者数值。如果提供,socket 会离开这个多播组在这个网络接口上。
该方法没有返回值。
下面是一个例子,展示如何使用 socket.dropMembership()
方法:
const dgram = require('dgram');
const socket = dgram.createSocket('udp4');
const MULTICAST_ADDR = '239.255.255.250';
const MULTI_PORT = 5000;
// 加入多播组
socket.addMembership(MULTICAST_ADDR);
// 监听消息
socket.on('message', (msg, rinfo) => {
console.log(`接收到来自 ${rinfo.address}:${rinfo.port} 的消息:${msg}`);
});
// 发送消息
const message = 'Hello, Multicast!';
socket.send(message, MULTI_PORT, MULTICAST_ADDR);
// 5 秒后离开多播组
setTimeout(() => {
socket.dropMembership(MULTICAST_ADDR);
console.log('离开多播组');
}, 5000);
以上代码使用 dgram.createSocket()
方法创建了一个 UDP Socket,并通过 addMembership()
方法加入了一个多播组。send()
方法用于向多播组发送消息。5 秒后调用 dropMembership()
方法离开多播组。
使用该方法时需要注意以下几点:
addMembership()
之前,必须为 socket 绑定一个网络接口以便让 socket 监听在这个接口上。dropMembership()
方法,以便在网络接口上离开这个多播组。参考文献: