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服务器(1):一个简单nodejs服务器例子
Dec 18 NodeJs
Windows系统下使用Sublime搭建nodejs环境
Apr 13 NodeJs
深入nodejs中流(stream)的理解
Mar 27 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
NodeJS收发GET和POST请求的示例代码
Aug 25 NodeJs
NodeJS安装图文教程
Apr 19 NodeJs
nodeJS服务器的创建和重新启动的实现方法
May 12 NodeJs
利用nodeJs anywhere搭建本地服务器环境的方法
May 12 NodeJs
webstorm中配置nodejs环境及npm的实例
May 15 NodeJs
nodeJS进程管理器pm2的使用
Jan 09 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 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 获取文件权限函数介绍
2013/07/11 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
php中使用websocket详解
2016/09/23 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
Javascript Throttle & Debounce应用介绍
2013/03/19 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
2016/10/28 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
js数组的基本使用总结
2021/01/18 Javascript
python中scikit-learn机器代码实例
2018/08/05 Python
python使用Matplotlib画条形图
2020/03/25 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
高性能装备提升营地:Kammok
2019/02/27 全球购物
什么是事务?为什么需要事务?
2012/01/09 面试题
求职信格式范本
2013/11/15 职场文书
舞蹈教育学专业推荐信
2013/11/27 职场文书
仓库保管员岗位职责
2013/12/20 职场文书
找工作最新求职信
2013/12/22 职场文书
安全检查管理制度
2014/02/02 职场文书
一年级学生评语大全
2014/04/21 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
中学政教处工作总结
2015/08/13 职场文书
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL