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 07 NodeJs
利用NodeJS的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
nodejs中实现路由功能
Dec 29 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
简单好用的nodejs 爬虫框架分享
Mar 26 NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 NodeJs
nodejs之koa2请求示例(GET,POST)
Aug 07 NodeJs
nodejs读取本地中文json文件出现乱码解决方法
Oct 10 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 NodeJs
Nodejs异步流程框架async的方法
Jun 07 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中for与foreach的区别分析
2011/03/09 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
Javascript下IE与Firefox下的差异兼容写法总结
2010/06/18 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
简单了解python单例模式的几种写法
2019/07/01 Python
python实现淘宝购物系统
2019/10/25 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
介绍一下Linux文件的记录形式
2012/04/18 面试题
历史学专业个人的自我评价
2013/10/13 职场文书
办公室副主任岗位职责
2013/11/25 职场文书
大学生创业策划书
2014/02/02 职场文书
元旦晚会策划方案
2014/02/18 职场文书
四风问题原因分析及整改措施
2014/10/24 职场文书
2014年党员整改措施
2014/10/24 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
办公用品管理制度
2015/08/04 职场文书
vue打包时去掉所有的console.log
2022/04/10 Vue.js