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爬虫抓取数据之编码问题
Jul 03 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
nodejs基础应用
Feb 03 NodeJs
nodejs个人博客开发第七步 后台登陆
Apr 12 NodeJs
配置nodejs环境的方法
May 13 NodeJs
详解Nodejs之npm&package.json
Jun 15 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 NodeJs
Nodejs Express 通过log4js写日志到Logstash(ELK)
Aug 30 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 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生成过去100年下拉列表的方法
2015/07/20 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
JQuery 写的个性导航菜单
2009/12/24 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
pc加载更多功能和移动端下拉刷新加载数据
2016/11/07 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
微信小程序显示下拉列表功能【附源码下载】
2017/12/12 Javascript
JS+canvas画一个圆锥实例代码
2017/12/13 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
Python文件读写常见用法总结
2019/02/22 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
python之信息加密题目详解
2019/06/26 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
如何通过命令行进入python
2020/07/06 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
监察建议书范文
2014/03/12 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
超市主管竞聘书
2015/09/15 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
Python之matplotlib绘制饼图
2022/04/13 Python
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技