Я пытаюсь создать чат-программу с поддержкой широковещательной передачи в формате UDP, идея заключается в том, что любой пользователь локальной сети может просто появиться и начать вводить и отправлять сообщения.UDP multi broadcast nodejs
Я полагаю, что каждому клиенту нужны два сокета, один для отправки сообщений и один для приема сообщений.
В простейшем случае это то, что я сейчас:
"using strict";
const multicast_addr = "224.1.1.1",
bin_addr = "0.0.0.0",
port = 6811;
var udp = require("dgram");
var listener = udp.createSocket("udp4"),
sender = udp.createSocket("udp4");
listener.bind(port, multicast_addr, function(){
listener.addMembership(multicast_addr);
listener.setBroadcast(true);
});
listener.on("message", function (b, other) {
console.log(b.toString().trim());
});
process.stdin.on("data", function (data){
sender.send(data, 0, data.length, port, multicast_addr);
});
(Ничего эхо, это логика приложения, которая будет построена на вершине)
Это эхо сообщение обратно к человек, который запускает код, но я также запускал это одновременно на виртуальной машине Linux на той же машине, OS X, но не видел передаваемых сообщений вообще.
Я не уверен, если это означает, что
1) Мой код неверен
2) виртуальные машины имеют один и тот же сети в качестве принимающей машины?
3) Код верный, но мой домашний маршрутизатор блокирует несколько широковещательных пакетов?
Вы хотите привязываться к 'bin_addr', а затем добавить членство в' multicast_addr'? Кажется, что 'bin_addr' никогда не используется. Я тоже пытаюсь это сделать. – snakeoil