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 相关文章推荐
基于html5和nodejs相结合实现websocket即使通讯
Nov 19 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
深入nodejs中流(stream)的理解
Mar 27 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
基于nodejs+express4.X实现文件下载的实例代码
Jul 13 NodeJs
浅谈nodejs中的类定义和继承的套路
Jul 26 NodeJs
nodejs高大上的部署方式(PM2)
Sep 11 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 NodeJs
分享五个Node.js开发的优秀实践 
Apr 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
PHP图片加水印实现方法
2016/05/06 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
php上传excel表格并获取数据
2017/04/27 PHP
php实现等比例压缩图片
2018/07/26 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
js 数组的for循环到底应该怎么写?
2010/05/31 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
python xml解析实例详解
2016/11/14 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
WxPython建立批量录入框窗口
2019/02/27 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
python3.8下载及安装步骤详解
2020/01/15 Python
Python request post上传文件常见要点
2020/11/20 Python
HTML5之语义标签介绍
2016/07/07 HTML / CSS
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
Lookfantastic日本官网:英国知名护肤、化妆品和头发护理购物网站
2018/04/21 全球购物
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
驾驶员培训方案
2014/05/01 职场文书
初中思品教学反思
2016/02/20 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电