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之请求路由概述
Jul 05 NodeJs
nodejs中实现路由功能
Dec 29 NodeJs
windows下安装nodejs及框架express
Aug 07 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
简单好用的nodejs 爬虫框架分享
Mar 26 NodeJs
详解nodejs异步I/O和事件循环
Jun 07 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
nodeJs爬虫的技术点总结
May 13 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
Nodejs封装类似express框架的路由实例详解
Jan 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
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
PHP初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
javascript 面向对象编程基础:封装
2009/08/21 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
jquery 页面滚动到指定DIV实现代码
2013/09/25 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
js实现连个数字相加而不是拼接的方法
2014/02/23 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
VUE脚手架具体使用方法
2019/05/20 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
详解实现vue的数据响应式原理
2021/01/20 Vue.js
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
浅谈Python中数据解析
2015/05/05 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
小加工厂管理制度
2014/01/21 职场文书
服务员岗位职责
2014/01/29 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
学习保证书怎么写
2015/02/26 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python