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极简入门教程(二):定时器
Oct 25 NodeJs
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
nodeJS代码实现计算交社保是否合适
Mar 09 NodeJs
ubuntu下安装nodejs以及升级的办法
May 08 NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 NodeJs
nodejs中使用HTTP分块响应和定时器示例代码
Mar 19 NodeJs
nodejs中sleep功能实现暂停几秒的方法
Jul 12 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
nodejs的安装使用与npm的介绍
Sep 11 NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 06 NodeJs
浅谈JS和Nodejs中的事件驱动
May 05 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
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
php实现mysql封装类示例
2014/05/07 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
python数据结构之二叉树的遍历实例
2014/04/29 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
python算的上脚本语言吗
2020/06/22 Python
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
营业员演讲稿
2013/12/30 职场文书
迟到检讨书500字
2014/02/05 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
运动会的口号
2014/06/09 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
电工实训报告总结
2014/11/05 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书