我试图向地址为230.185.192.108的UDP组播地址发送数据包,以便所有已订阅的客户端都能接收。但目前遇到了一些困难,虽然我相信广播已经正确发送,但是使用任何客户端似乎都无法接收到。
服务器:
var news = [
"Borussia Dortmund wins German championship",
"Tornado warning for the Bay Area",
"More rain for the weekend",
"Android tablets take over the world",
"iPad2 sold out",
"Nation's rappers down to last two samples"
];
var dgram = require('dgram');
var server = dgram.createSocket("udp4");
server.bind();
server.setBroadcast(true)
server.setMulticastTTL(128);
server.addMembership('230.185.192.108');
setInterval(broadcastNew, 3000);
function broadcastNew() {
var message = new Buffer(news[Math.floor(Math.random()*news.length)]);
server.send(message, 0, message.length, 8088, "230.185.192.108");
console.log("Sent " + message + " to the wire...");
//server.close();
}
客户端
var PORT = 8088;
var HOST = '192.168.0.102';
var dgram = require('dgram');
var client = dgram.createSocket('udp4');
client.on('listening', function () {
var address = client.address();
console.log('UDP Client listening on ' + address.address + ":" + address.port);
client.setBroadcast(true)
client.setMulticastTTL(128);
client.addMembership('230.185.192.108');
});
client.on('message', function (message, remote) {
console.log('A: Epic Command Received. Preparing Relay.');
console.log('B: From: ' + remote.address + ':' + remote.port +' - ' + message);
});
client.bind(PORT, HOST);
参考资料 有关NodeJS数据报的更多信息