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 第八天:Socket 通讯实例
Dec 21 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
详解Nodejs之npm&package.json
Jun 15 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
详解Nodejs内存治理
May 13 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 NodeJs
nodejs中的异步编程知识点详解
Jan 17 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 小乘法表实现代码
2009/07/16 PHP
php文件夹与文件目录操作函数介绍
2013/09/09 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
ThinkPHP框架分布式数据库连接方法详解
2017/03/14 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
Angular2入门--架构总览
2017/03/29 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
jQuery实现的点击图片居中放大缩小功能示例
2019/01/16 jQuery
使用Angular9和TypeScript开发RPG游戏的方法
2020/03/25 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
原生js实现滑块区间组件
2021/01/20 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
python清除函数占用的内存方法
2018/06/25 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
FOREO斐珞尔官方旗舰店:LUNA露娜洁面仪
2018/03/11 全球购物
linux下进程间通信的方式
2013/01/23 面试题
斯福泰克软件测试面试题
2015/02/16 面试题
路政管理专业个人自荐信范文
2013/11/30 职场文书
我的网上商城创业计划书
2013/12/26 职场文书
公司投资建议书
2014/05/16 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
泰山导游词
2015/02/02 职场文书
2015年招生工作总结
2015/05/04 职场文书
走进毛泽东观后感
2015/06/04 职场文书
公务员处分决定书
2015/06/25 职场文书