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实现获取当前url地址及url各种参数值
Jun 25 NodeJs
基于nodejs+express(4.x+)实现文件上传功能
Nov 23 NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
详解使用nodeJs安装Vue-cli
May 17 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
Nodejs连接mysql并实现增、删、改、查操作的方法详解
Jan 04 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 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方法调用模式与函数调用模式简例
2011/09/20 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
Python自动连接ssh的方法
2015/03/07 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
Python3进制之间的转换代码实例
2019/08/24 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
车间副主任岗位职责
2013/12/24 职场文书
医院辞职信范文
2014/01/17 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
城管年度个人总结
2015/02/28 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
React如何使用axios请求数据并把数据渲染到组件
2022/08/05 Javascript