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 相关文章推荐
golang、python、php、c++、c、java、Nodejs性能对比
Mar 12 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
详解nodejs微信公众号开发——6.自定义菜单
Apr 13 NodeJs
win系统下nodejs环境安装配置
May 04 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 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
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
input按钮的事件处理大全
2010/12/10 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
jQuery中Dom的基本操作小结
2014/01/23 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
深入理解js函数的作用域与this指向
2016/05/28 Javascript
html+js实现简单的计算器代码(加减乘除)
2016/07/12 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
js根据需要计算数组中重复出现某个元素的个数
2019/01/18 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
Python多线程编程(五):死锁的形成
2015/04/05 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python科学计算之Pandas详解
2017/01/15 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
自我鉴定200字
2013/10/28 职场文书
领导干部培训感言
2014/01/23 职场文书
党员干部承诺书范文
2014/03/25 职场文书
三八妇女节寄语
2015/02/27 职场文书
利用Pycharm连接服务器的全过程记录
2021/07/01 Python