我需要向连接到网络的所有计算机(服务器)发送广播数据报。
我正在使用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_BROADCASTsocket选项才能将数据报发送到广播地址。查找dgram文档,似乎有一个功能。
SO_BROADCAST
dgram
var client = dgram.createSocket("udp4"); client.setBroadcast(true); client.send(message, 0, message.length, 41234, "192.168.0.255");
您可能想以编程方式找到广播地址,但是我无法为您提供帮助。