node.js - 客户端未收到多播消息

标签 node.js linux udp multicast tcpdump

通过 tcpdump,我在 ETH0 上看到了这些多播消息:

19:50:31.493386 IP 169.254.17.110.60000 > 239.1.0.8.60000: UDP, length 273
19:50:31.493962 IP 169.254.17.110.60000 > 239.1.0.8.60000: UDP, length 153

但我没有通过客户端程序接收它们。我尝试了 Python 和 NodeJS:

const PORT = 60000;
const HOST = '10.100.0.1';
const MCAST = '239.1.0.8';

const dgram = require('dgram');
const client = dgram.createSocket('udp4');
client.bind({address: HOST, port: PORT}, () => {
    const address = client.address();
    console.log('UDP Client listening on ' + address.address + ":" + address.port);
    client.setBroadcast(true);
    client.setMulticastTTL(128);
    client.addMembership(MCAST, HOST);
});

client.on('message', (message, remote) => {
    console.log('From: ' + remote.address + ':' + remote.port +' - ' + message);
});

我的 ETH0 IP 是 10.100.0.1。我尝试不绑定(bind)到我的主机,但没有成功。

如果我用另一个 NodeJS 脚本向相同的地址和端口 (239.1.0.8:60000) 发送多播消息,我的客户端程序会收到它。

我正在研究 Debian Stretch:

Linux car 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux

感谢您对此的任何指导。

最佳答案

尝试捕捉错误

client.on('error', (err) => {
  console.error(err);
});

关于node.js - 客户端未收到多播消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50978947/

相关文章:

javascript - 如何将 Node 变量传递给外部javascript?

javascript - 如何将存档 (zip) 通过管道传输到 S3 存储桶

比较c linux fgets中的2个文件

c - 如何检测接收到长度为 0 的 UDP 数据报

sockets - 如何在不打开端口的情况下建立TCP/IP连接?

c++ - 如何轻松解决Wsock2 10040 message too long错误

node.js - 如何在 Windows 上的一行中设置多个环境变量?

node.js - 如何使用 node.js express backbone.js mongodb 登录用户?

c - Unix 服务器客户端连接 : Connection refused

c - 我如何使用 clone() 系统调用而不是通常的 fork() + exec() 组合?