nodejs实现UDP组播示例方法


Posted in NodeJs onNovember 04, 2019

众所周知,UDP数据传输方式有 单播,组播,广播。

其中单播模式是最常用,这里就不再??铝耍??纤姹愣寄芩训健?/p>

下面的示例主要实现简单的UDP组播方式。可以正常收发UDP数据。

Server端代码

const dgram = require('dgram');
const server = dgram.createSocket('udp4');

// const local_ip = "192.168.0.xx";
const multicast_ip = "225.0.0.100"; // 这里必须是一个组播地址(D类IP地址)

server.on('close', ()=>{
  console.log('close socket');
});

server.on('listening', ()=>{
  console.log('listening...');
  server.setBroadcast(true);
  server.setMulticastTTL(128);
  server.addMembership(multicast_ip);

  setInterval(()=>{
    send_msg();
  }, 2000);
});

server.on('message', (msg, rinfo)=>{
  console.log(`receive client message from ${rinfo.address}: ${rinfo.port}: ${msg}`);
});

server.bind(); // 随机绑定本机一个端口

function send_msg(){
  console.log('send msg');
  server.send('hi, im server...', '8062', multicast_ip);
}

Client端代码:

const dgram = require('dgram');
var client = dgram.createSocket('udp4');

// const local_ip = '192.168.0.xx';
const multicast_ip = "225.0.0.100";  // 这里必须是一个组播地址(D类IP地址)

client.on('close', ()=>{
  console.log('client closed');
});

client.on('error', (err) =>{
  console.log('client error' + err);
});

client.on('listening', ()=>{
  console.log('client listening...');
  client.setBroadcast(true);
  client.setMulticastTTL(128);
  client.addMembership(multicast_ip);
});

client.on('message', (msg, rinfo) => {
  console.log(`receive server message from ${rinfo.address}: ${rinfo.port}: ${msg}`);
});
client.bind('8062'); // 监听组播数据的端口

参考:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
初始Nodejs
Nov 08 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
Windows系统下使用Sublime搭建nodejs环境
Apr 13 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 NodeJs
简单实现nodejs上传功能
Jan 14 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs基于WS模块实现WebSocket聊天功能的方法
Jan 12 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 #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
You might like
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
用PHP将数据导入到Foxmail
2006/10/09 PHP
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
详解HTTP Cookie状态管理机制
2016/01/14 PHP
xtree.js 代码
2007/03/13 Javascript
jquery键盘事件介绍
2011/01/31 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
vue2导航根据路由传值,而改变导航内容的实例
2017/11/10 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
学生自我评语大全
2014/04/18 职场文书
爱之链教学反思
2014/04/30 职场文书
应届毕业生自荐书
2014/06/18 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
战马观后感
2015/06/08 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
创业计划书之蛋糕店
2019/08/29 职场文书