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的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
Nodejs学习笔记之入门篇
Apr 16 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
详解NODEJS的http实现
Jan 04 NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 NodeJs
nodejs基于express实现文件上传的方法
Mar 19 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 NodeJs
NodeJS实现一个聊天室功能
Nov 25 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 翻页 实例代码
2009/08/07 PHP
php实现的短网址算法分享
2014/06/20 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
PHP链表操作简单示例
2016/10/15 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
用python代码做configure文件
2014/07/20 Python
浅谈MySQL中的触发器
2015/05/05 Python
python开发中module模块用法实例分析
2015/11/12 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
python写入已存在的excel数据实例
2018/05/03 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
增大python字体的方法步骤
2020/07/05 Python
英国时尚饰品和发饰购物网站:Claire’s
2017/07/04 全球购物
探矿工程师自荐信
2014/01/24 职场文书
建筑工地大门标语
2014/06/18 职场文书
音乐教师求职信
2014/06/28 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
压缩Redis里的字符串大对象操作
2021/06/23 Redis
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android