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应用主文件index.js
Aug 28 NodeJs
nodeJs内存泄漏问题详解
Sep 05 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
nodejs实现简单的gulp打包
Dec 21 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
NodeJS实现自定义流的方法
Aug 01 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
nodejs分离html文件里面的js和css的方法
Apr 09 NodeJs
nodejs的安装使用与npm的介绍
Sep 11 NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
Nov 18 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利用cookie实现自动登录的方法
2014/12/10 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
jquery Mobile入门—外部链接切换示例代码
2013/01/08 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
python测试驱动开发实例
2014/10/08 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
20岁生日感言
2014/01/13 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
运动会标语
2014/06/21 职场文书
推广普通话标语
2014/06/27 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
mysql数据插入覆盖和时间戳的问题及解决
2022/03/25 MySQL
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫