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全栈框架StrongLoop推荐
Nov 09 NodeJs
Nodejs学习笔记之入门篇
Apr 16 NodeJs
nodejs读写json文件的简单方法(必看)
Mar 09 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
Nodejs中crypto模块的安全知识讲解
Jan 03 NodeJs
nodejs多版本管理总结
Apr 03 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 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
1.PHP简介
2006/10/09 PHP
PHP中array_slice函数用法实例详解
2014/11/25 PHP
PHP调试函数和日志记录函数分享
2015/01/31 PHP
用PHP生成excel文件到指定目录
2015/06/22 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
PHP时间函数使用详解
2019/03/21 PHP
文字幻灯片
2006/06/26 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
实例讲解Python中整数的最大值输出
2019/03/17 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
python实现门限回归方式
2020/02/29 Python
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
工业学校毕业生自荐书
2014/01/03 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
MySQL之select、distinct、limit的使用
2021/11/11 MySQL
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android
Windows7下FTP搭建图文教程
2022/08/05 Servers