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和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 NodeJs
nodejs个人博客开发第三步 载入页面
Apr 12 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
nodejs body-parser 解析post数据实例
Jul 26 NodeJs
nodejs前端模板引擎swig入门详解
May 15 NodeJs
nodeJS进程管理器pm2的使用
Jan 09 NodeJs
在nodejs中创建child process的方法
Jan 26 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运行速度的一些小技巧分享
2012/07/03 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
javascript的函数作用域
2014/11/12 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
vue拖拽排序插件vuedraggable使用方法详解
2020/08/21 Javascript
解决layui checkbox 提交多个值的问题
2019/09/02 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
python 获取等间隔的数组实例
2019/07/04 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
django和vue实现数据交互的方法
2019/08/21 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
python常用排序算法的实现代码
2019/11/08 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
在求职信中如何凸显个人优势
2013/10/30 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技