node.js - 客户端未收到多播消息
问题描述
使用 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。我尝试不绑定到我的主机而没有成功。
如果我将带有另一个 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);
});
推荐阅读
- javascript - 是否可以访问在 wdio.conf 中声明的变量?
- python - 带有多索引和 parse_date 的 pandas read_excel;如何?
- java - 加工中的平稳运动
- laravel - 路线 [products.all] 未定义。(\resources\views\product\cart.blade.php)
- c++ - C ++ - 错误:未在此范围内声明“睡眠”
- c - 编写一个函数来返回节点的位置
- javascript - 即使设备锁定也继续播放 iframe
- php - 如何在 Laravel 中为不同的视图实现不同的标题?
- java - Flutter 医生说我有许可问题
- python - 获取“OSError:无法运行 gpg () - 它可能不可用。” python-gnupg 出错