我在通过Wi-Fi连接的两台计算机上运行了以下Node.js代码:
var net = require('net');
var dgram = require('dgram');
var inputSocket = dgram.createSocket('udp4');
inputSocket.on('message', function (msg, rinfo) {
console.log("Got message \"" + msg.toString() + "\" from " + rinfo.address);
});
inputSocket.bind(1234, '255.255.255.255', function () {
inputSocket.setBroadcast(true);
});
outputSocket = dgram.createSocket('udp4');
outputSocket.bind(function () {
outputSocket.setBroadcast(true);
});
setInterval(function () {
var message = new Buffer('hello!');
outputSocket.send(message, 0, 6, 1234, '255.255.255.255');
}, 500);
在第一台计算机上(运行Crunchbang Linux)代码运行正常,并显示来自两台机器的广播:
Got message "hello!" from 192.168.43.53
Got message "hello!" from 192.168.43.180
Got message "hello!" from 192.168.43.53
Got message "hello!" from 192.168.43.180
但是,在第二个(运行Ubuntu)上,它只显示自己发送的广播:
Got message "hello!" from 192.168.43.180
Got message "hello!" from 192.168.43.180
第二台计算机上的防火墙已禁用;两台计算机都安装了相同版本的Node.js(v0.10.26)。
如何解决此问题?更具体地说,我希望第二台计算机接收从本地网络发送到255.255.255.255的所有广播。