nodejs dgram模块广播+组播的实现示例


Posted in NodeJs onNovember 04, 2019

本机IP地址是10.8.93.80,

nodejs dgram模块广播+组播的实现示例

具体信息如上图所示

根据计算得知我的广播地址应该是10.8.93.255,不是10.8.93.254哦。

其它内容就直接上代码

server.js

const dgram = require('dgram');
const server = dgram.createSocket('udp4');
const multicastAddr = '224.100.100.100';

server.on('close', () => {
 console.log('socket已关闭');
});

server.on('error', (err) => {
 console.log(err);
});

server.on('listening', () => {
 console.log('socket正在监听中...');
 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('大家好啊,我是服务端广播消息', 8061, '10.8.93.255');
 server.send('大家好啊,我是服务端组播消息', 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已关闭');
});

client.on('error', (err) => {
 console.log(err);
});
client.on('listening', () => {
 console.log('socket正在监听中...');
 client.addMembership(multicastAddr);
});
client.on('message', (msg, rinfo) => {
 console.log(`receive server message from ${rinfo.address}:${rinfo.port}:${msg}`);
});
client.bind(8061); // 此处必须绑定自己的局域网IP或者不填,填localhost是不行的

代码中我的服务器是绑定的8060端口,向广播地址的8061端口发送广播,故意改成不一样的是为了本机的客户端也能够接收试试,不然不就端口占用了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
NodeJS学习笔记之MongoDB模块
Jan 13 NodeJs
nodejs初步体验篇
Nov 23 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
Nodejs 搭建简单的Web服务器详解及实例
Nov 30 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
nodejs分离html文件里面的js和css的方法
Apr 09 NodeJs
nodejs实现聊天机器人功能
Sep 19 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 #NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 #NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 #NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 #NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 #NodeJs
nodejs实现聊天机器人功能
Sep 19 #NodeJs
图解NodeJS实现登录注册功能
Sep 16 #NodeJs
You might like
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
Javascript中Eval函数的使用
2010/03/23 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
Vue实现计算器计算效果
2020/08/17 Javascript
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
python zip()函数使用方法解析
2019/10/31 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
过滤器的用法
2013/10/08 面试题
建筑学推荐信
2013/11/03 职场文书
材料物理专业个人求职信
2013/12/15 职场文书
在校生自我鉴定
2014/01/23 职场文书
创业计划书撰写原则
2014/01/25 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
三方协议书范本
2014/04/22 职场文书
餐厅服务员管理制度
2015/08/05 职场文书
vue 实现上传组件
2021/05/31 Vue.js