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 后缀名判断限制代码
Mar 31 NodeJs
nodejs教程之环境安装及运行
Nov 21 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
Nodejs的express使用教程
Nov 23 NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
nodejs中art-template模板语法的引入及冲突解决方案
Nov 07 NodeJs
Nodejs监听日志文件的变化的过程解析
Aug 04 NodeJs
NodeJS 文件夹拷贝以及删除功能
Sep 03 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网上调查系统
2006/10/09 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
Nuxt页面级缓存的实现
2020/03/09 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
python开发中module模块用法实例分析
2015/11/12 Python
Python内置函数OCT详解
2016/11/09 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
Python 多维List创建的问题小结
2019/01/18 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
TensorFlow2.0使用keras训练模型的实现
2021/02/20 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
建筑人员岗位职责
2013/12/25 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
监理中标通知书
2015/04/16 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
个人催款函范文
2015/06/23 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书