眾所周知,UDP數據傳輸方式有 單播,組播,廣播。
其中單播模式是最常用,這里就不再啰嗦了,網上隨便都能搜到。
下面的示例主要實現簡單的UDP組播方式??梢哉J瞻l(fā)UDP數據。
Server端代碼
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
// const local_ip = "192.168.0.xx";
const multicast_ip = "225.0.0.100"; // 這里必須是一個組播地址(D類IP地址)
server.on('close', ()=>{
console.log('close socket');
});
server.on('listening', ()=>{
console.log('listening...');
server.setBroadcast(true);
server.setMulticastTTL(128);
server.addMembership(multicast_ip);
setInterval(()=>{
send_msg();
}, 2000);
});
server.on('message', (msg, rinfo)=>{
console.log(`receive client message from ${rinfo.address}: ${rinfo.port}: ${msg}`);
});
server.bind(); // 隨機綁定本機一個端口
function send_msg(){
console.log('send msg');
server.send('hi, im server...', '8062', multicast_ip);
}
Client端代碼:
const dgram = require('dgram');
var client = dgram.createSocket('udp4');
// const local_ip = '192.168.0.xx';
const multicast_ip = "225.0.0.100"; // 這里必須是一個組播地址(D類IP地址)
client.on('close', ()=>{
console.log('client closed');
});
client.on('error', (err) =>{
console.log('client error' + err);
});
client.on('listening', ()=>{
console.log('client listening...');
client.setBroadcast(true);
client.setMulticastTTL(128);
client.addMembership(multicast_ip);
});
client.on('message', (msg, rinfo) => {
console.log(`receive server message from ${rinfo.address}: ${rinfo.port}: ${msg}`);
});
client.bind('8062'); // 監(jiān)聽組播數據的端口