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的前后端分离的思考与实践(四)安全问题解决方案
Sep 26 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
Nodejs如何复制文件
Mar 09 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
NodeJs的优势和适合开发的程序
Aug 14 NodeJs
nodejs基础知识
Feb 03 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
nodejs爬虫初试superagent和cheerio
Mar 05 NodeJs
Nodejs让异步变成同步的方法
Mar 02 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 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
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
PHP里的$_GET数组介绍
2019/03/22 PHP
浅析jquery的js图表组件highcharts
2014/03/06 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
JS实现移动端按首字母检索城市列表附源码下载
2017/07/05 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
python2.7的编码问题与解决方法
2016/10/04 Python
python实现textrank关键词提取
2018/06/22 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
快速解决jupyter notebook启动需要密码的问题
2020/04/21 Python
Python-for循环的内部机制
2020/06/12 Python
使用Python实现音频双通道分离
2020/12/25 Python
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
几个常见的消息中间件(MOM)
2014/01/08 面试题
品学兼优的大学生自我评价
2013/09/20 职场文书
资产经营总监岗位职责
2013/12/04 职场文书
触摸春天教学反思
2014/02/03 职场文书
高三政治教学反思
2014/02/06 职场文书
社区志愿者活动方案
2014/08/18 职场文书
先进事迹演讲稿
2014/09/01 职场文书
华山导游词
2015/02/03 职场文书
个人业务学习心得体会
2016/01/25 职场文书
MySQL为id选择合适的数据类型
2021/06/07 MySQL
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python