UDP多播nodejs
UDP multi broadcast nodejs
我正在尝试创建一个基于 UDP 多广播的聊天程序,其想法是本地网络上的任何人都可以弹出并开始键入和发送消息。
我估计每个客户端都需要两个套接字,一个发送消息,一个接收消息。
最简单的,这就是我现在拥有的:
"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) 代码正确,但我的家用路由器阻止了多广播数据包?
啊,我发现了这个为地址重用端口的巧妙技巧。
"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({type:"udp4", reuseAddr:true}),
sender = udp.createSocket({type:"udp4", reuseAddr:true});
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);
});
努力让 OS X 通过本地网络与非 VM Ubuntu 交谈。
我正在尝试创建一个基于 UDP 多广播的聊天程序,其想法是本地网络上的任何人都可以弹出并开始键入和发送消息。
我估计每个客户端都需要两个套接字,一个发送消息,一个接收消息。
最简单的,这就是我现在拥有的:
"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) 代码正确,但我的家用路由器阻止了多广播数据包?
啊,我发现了这个为地址重用端口的巧妙技巧。
"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({type:"udp4", reuseAddr:true}),
sender = udp.createSocket({type:"udp4", reuseAddr:true});
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);
});
努力让 OS X 通过本地网络与非 VM Ubuntu 交谈。