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实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
nodeJs爬虫获取数据简单实现代码
Mar 29 NodeJs
nodejs redis 发布订阅机制封装实现方法及实例代码
Dec 15 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
Nodejs 复制文件/文件夹的方法
Aug 24 NodeJs
Windows下使用Nodejs运行js的方法
Sep 02 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 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防注入安全代码
2008/04/09 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
PHP实现的简单日历类
2014/11/29 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
如何使用angularJs
2017/05/08 Javascript
详细分析JS函数去抖和节流
2017/12/05 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
python实现simhash算法实例
2014/04/25 Python
python socket多线程通讯实例分析(聊天室)
2016/04/06 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
深入浅析Python科学计算库Scipy及安装步骤
2019/10/12 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
巡警年度自我鉴定
2014/02/21 职场文书
大学生就业策划书范文
2014/04/04 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
品酒会策划方案
2014/05/26 职场文书
验房委托书
2014/08/30 职场文书
银行自荐信怎么写
2015/03/05 职场文书
预备党员群众意见
2015/06/01 职场文书
学习党史心得体会2016
2016/01/23 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
一文搞懂Redis中String数据类型
2022/04/03 Redis