我需要向连接到网络的所有计算机(服务器)发送广播数据报。

我正在使用NodeJS组播

客户

var dgram = require('dgram');
var message = new Buffer("Some bytes");
var client = dgram.createSocket("udp4");
client.send(message, 0, message.length, 41234, "localhost");
// If I'm in the same machine 'localhost' works
// I need to do something 192.168.0.255 or 255.255.255
client.close();

服务器
 var dgram = require("dgram");

 var server = dgram.createSocket("udp4");

 server.on("message", function (msg, rinfo) {
   console.log("server got: " + msg + " from " +
     rinfo.address + ":" + rinfo.port);
 });

 server.on("listening", function () {
   var address = server.address();
   console.log("server listening " + address.address + ":" + address.port);
 });

 server.bind(41234);

谢谢。

最佳答案

我从未使用过Node.js,但我确实记得使用Berkely套接字(这是最广泛使用的套接字实现),您需要启用SO_BROADCAST套接字选项才能将数据报发送到广播地址。查找dgram文档,似乎有a function for it

var client = dgram.createSocket("udp4");
client.setBroadcast(true);
client.send(message, 0, message.length, 41234, "192.168.0.255");

您可能想以编程方式找到广播地址,但是我不能为您提供帮助。

10-08 14:44