nodejs dgram模塊廣播+組播的實現(xiàn)示例
本機(jī)IP地址是10.8.93.80,

具體信息如上圖所示
根據(jù)計算得知我的廣播地址應(yīng)該是10.8.93.255,不是10.8.93.254哦。
其它內(nèi)容就直接上代碼
server.js
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
const multicastAddr = '224.100.100.100';
server.on('close', () => {
console.log('socket已關(guān)閉');
});
server.on('error', (err) => {
console.log(err);
});
server.on('listening', () => {
console.log('socket正在監(jiān)聽中...');
server.addMembership(multicastAddr); // 不寫也行
server.setBroadcast(true);
server.setMulticastTTL(128);
setInterval(() => {
sendMsg();
}, 1500);
});
server.on('message', (msg, rinfo) => {
console.log(`receive client message from ${rinfo.address}:${rinfo.port}`);
});
function sendMsg() {
console.log('sending');
server.send('大家好啊,我是服務(wù)端廣播消息', 8061, '10.8.93.255');
server.send('大家好啊,我是服務(wù)端組播消息', 8061, multicastAddr);
}
server.bind('8060'); // 此處填寫IP后無法組播
client.js
const dgram = require('dgram');
const client = dgram.createSocket('udp4');
const multicastAddr = '224.100.100.100';
client.on('close', () => {
console.log('socket已關(guān)閉');
});
client.on('error', (err) => {
console.log(err);
});
client.on('listening', () => {
console.log('socket正在監(jiān)聽中...');
client.addMembership(multicastAddr);
});
client.on('message', (msg, rinfo) => {
console.log(`receive server message from ${rinfo.address}:${rinfo.port}:${msg}`);
});
client.bind(8061); // 此處必須綁定自己的局域網(wǎng)IP或者不填,填localhost是不行的
代碼中我的服務(wù)器是綁定的8060端口,向廣播地址的8061端口發(fā)送廣播,故意改成不一樣的是為了本機(jī)的客戶端也能夠接收試試,不然不就端口占用了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
npm出現(xiàn)Cannot?find?module?'XXX\node_modules\npm\bin\np
最近在啟動項目的時候會報這個錯就是npm丟失,所以下面這篇文章主要給大家介紹了關(guān)于npm出現(xiàn)Cannot?find?module?'XXX\node_modules\npm\bin\npm-cli.js'錯誤的解決方法,需要的朋友可以參考下2022-08-08
基于Express實現(xiàn)遞歸遍歷文件和CRUD操作
在現(xiàn)代的?Web?應(yīng)用開發(fā)中,文件管理是一個常見而重要的需求,所以本文就來講講如何利用?Express?框架,在遞歸遍歷文件之后實現(xiàn)強(qiáng)大的?CRUD?操作,構(gòu)建一個功能完善的文件管理系統(tǒng),感興趣的可以了解一下2023-06-06
Nodejs處理Json文件并將處理后的數(shù)據(jù)寫入新文件中
這篇文章主要介紹了Nodejs處理Json文件并將處理后的數(shù)據(jù)寫入新文件中,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10
node微信開發(fā)之獲取access_token+自定義菜單
這篇文章主要介紹了node微信開發(fā)之獲取access_token+自定義菜單,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03

