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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
nodejs中exports与module.exports的区别详细介绍
Jan 14 NodeJs
我的NodeJs学习小结(一)
Jul 06 NodeJs
nodeJs爬虫获取数据简单实现代码
Mar 29 NodeJs
nodejs根据ip数组在百度地图中进行定位
Mar 06 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
使用nodejs分离html文件里的js和css详解
Apr 12 NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 NodeJs
nodejs+express最简易的连接数据库的方法
Dec 23 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
用Flash图形化数据(二)
2006/10/09 PHP
转换中文日期的PHP程序
2006/10/09 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
php安装swoole扩展的方法
2015/03/19 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
基于jQuery.Validate验证库知识点的详解
2013/04/26 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
2020/06/04 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
python运行时间的几种方法
2016/06/17 Python
基于python爬虫数据处理(详解)
2017/06/10 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
公司端午节活动方案
2014/02/04 职场文书
运动会通讯稿200字
2014/02/16 职场文书
拉拉队口号
2014/06/16 职场文书
技能培训通讯稿
2015/07/18 职场文书
关于感恩的作文
2019/08/26 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
vue实力踩坑之push当前页无效
2022/04/10 Vue.js