Nodejs не может получать многоадресные пакеты на macos - PullRequest
0 голосов
/ 14 июля 2020

У меня есть сценарий узла, который хорошо работает в Windows и Linux, но не в MacOS. Попытка получить трафик PTP c (многоадресная рассылка 224.0.1.129, порт 319). Конечно, я запускаю сценарий как root. Вот что я хочу сделать:

var dgram = require("dgram");

const socket = dgram.createSocket({ type: "udp4", reuseAddr: true });
const PORT = 319;
const MULTICAST_ADDR = "224.0.1.129";
const HOST = "192.168.201.3"
 
socket.on("message", function(message, rinfo) {
    console.log("message")
});

socket.on("listening", function() {
    socket.addMembership(MULTICAST_ADDR,HOST);
    const address = socket.address();
    console.log("Ready to receive")
    console.log(`server listening ${address.address}:${address.port}`);
  });
socket.bind(PORT,HOST)

Я вижу трафик c с помощью tcpdump

-> % tcpdump -i en7 -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en7, link-type EN10MB (Ethernet), capture size 262144 bytes
18:00:11.581438 IP 192.168.1.135.319 > 224.0.1.129.319: UDP, length 44
18:00:11.581637 IP 192.168.1.133.319 > 224.0.1.129.319: UDP, length 44
18:00:11.581936 IP 192.168.1.135.320 > 224.0.1.129.320: UDP, length 44
[...]
18:00:13.083828 IP 192.168.1.135.320 > 224.0.1.129.320: UDP, length 44
18:00:13.084095 IP 192.168.1.135.320 > 224.0.1.129.320: UDP, length 64
^C
50 packets captured
50 packets received by filter
0 packets dropped by kernel

И ничего не получаю на выходе

nicolassturmel@Sleipnir [18:00:13] 
-> % sudo node test   
Password:
Ready to receive
server listening 192.168.201.3:319
^C
nicolassturmel@Sleipnir [18:14:26]

Спасибо, Н.

...