nodejs实现UDP组播示例方法

众所周知,UDP数据传输方式有 单播,组播,广播。

其中单播模式是最常用,这里就不再啰嗦了,网上随便都能搜到。

下面的示例主要实现简单的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'); // 监听组播数据的端口

参考:

https://www.jb51.net/article/173468.htm
https://stackoverflow.com/questions/14130560/nodejs-udp-multicast-how-to

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Node.js dgram模块实现UDP通信示例代码

    1.什么是UDP? 这里简单介绍下,UDP,即用户数据报协议,一种面向无连接的传输层协议,提供不可靠的消息传送服务.UDP协议使用端口号为不同的应用保留其各自的数据传输通道,这一点非常重要.与TCP相比,占用资源更少,传输速度更快. 2.了解UDP单播.广播和组播 单播:向一个单播地址发送UDP数据报时,数据报只能被指定的IP主机接收,同一子网下的其它主机都不会接收该数据报.单播过程(假设子网地址:192.168.10,该子网下有两台主机:192.168.10.2,192.168.10.3,向1

  • Nodejs实现的一个简单udp广播服务器、客户端

    nodejs发送udp广播还是蛮简单的,我们先写个服务器用于接收广播数据,代码如下: 复制代码 代码如下: var dgram = require("dgram"); var server = dgram.createSocket("udp4"); server.on("error", function (err) {   console.log("server error:\n" + err.stack);   server

  • nodejs实现UDP组播示例方法

    众所周知,UDP数据传输方式有 单播,组播,广播. 其中单播模式是最常用,这里就不再啰嗦了,网上随便都能搜到. 下面的示例主要实现简单的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.

  • java 单播、广播、组播详解及实例代码

    java 单播.广播.组播详解及实例代码 在当前网络通信中(TCP/IP也不例外)有三种通信模式:单播.广播.组播(又叫多播, 个人感觉叫多播描述的有点不恰当),其中多播出现的时间最晚,但同时具备单播和广播的优点,最具有发展前景. 一.通信方式分类: 1.单播:单台主机与单台主机之间的通信: 2.广播:单台主机与网络中所有主机的通信: 3.组播:单台主机与选定的一组主机的通信: 二.单播:    单播是网络通信中最常见的,网络节点之间的通信 就好像是人们之间的对话一样.如果一个人对另外一个人说话

  • nodejs dgram模块广播+组播的实现示例

    本机IP地址是10.8.93.80, 具体信息如上图所示 根据计算得知我的广播地址应该是10.8.93.255,不是10.8.93.254哦. 其它内容就直接上代码 server.js const dgram = require('dgram'); const server = dgram.createSocket('udp4'); const multicastAddr = '224.100.100.100'; server.on('close', () => { console.log('s

  • python3通过udp实现组播数据的发送和接收操作

    本文主要通过对海康摄像头进行抓包,模拟发送了udp包,并抓取摄像头返回的数据包,解析并提取相关信息. 通过抓包发现,海康摄像头发送.接收数据使用udp协议,后来比较发现,使用python模拟起来比较简单.由于摄像头内置了udp协议的server端程序,本文主要使用python模拟客户端发送udp数据包. 客户端代码 import socket import re ANY = "0.0.0.0" DES_IP = "239.255.255.250" PORT = 37

  • JAVA编程实现UDP网络通讯的方法示例

    本文实例讲述了JAVA编程实现UDP网络通讯的方法.分享给大家供大家参考,具体如下: UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议. 在OSI模型中,在第四层--传输层,处于IP协议的上一层.UDP有不提供数据包分组.组装和不能对数据包进行排序的缺点: 也就是说,当报文发送之后,是无法得知其是否安全完整到达的.UDP用来支持那些需要在计算机之间传输数据的网络应用. 采用UDP协议要先把数据定义成数据报(Datagram)并在数据报中指明数据所要达到

  • nodejs简单读写excel内容的方法示例

    本文实例讲述了nodejs简单读写excel内容的方法.分享给大家供大家参考,具体如下: 支持读写Excel的node.js模块 node-xlsx: 基于Node.js解析excel文件数据及生成excel文件,仅支持xlsx格式文件: excel-parser: 基于Node.js解析excel文件数据,支持xls及xlsx格式文件: excel-export : 基于Node.js将数据生成导出excel文件,生成文件格式为xlsx: node-xlrd: 基于node.js从excel文

  • nodejs实现连接mongodb数据库的方法示例

    本文实例讲述了nodejs实现连接mongodb数据库的方法.分享给大家供大家参考,具体如下: var MongoClient = require('mongodb').MongoClient; var DB_CONN_STR = 'mongodb://zlg:437612lang@110.62.14.243:27017/lj_node'; MongoClient.connect(DB_CONN_STR, function(err, db) { if(err){console.log(err)}

  • nodejs nedb 封装库与使用方法示例

    本文实例讲述了nodejs nedb 封装库与使用方法.分享给大家供大家参考,具体如下: libs/nedb.js const Datastore = require('nedb'); function DB(database) { let options = { filename: database, autoload: true, }; this.db = new Datastore(options); } DB.prototype.limit = function(offset, limi

  • java使用MulticastSocket实现组播

    组播是一种允许源进程将数据包发送到多个目标进程的网络技术.组播源将数据包发送到特定组播组,只有属于该组播组的进程才能接收到数据包.这些进程可以是在同一个物理网络,也可以来自不同的物理网络(只要有组播路由器支持). 组播分为无连接和面向连接组播,但是基本的组播机制是无连接的,我们这里所讲的也是无连接组播. 我们说过使用MulticastSocket类,这个类叫组播数据报套接字类,主要用来发送和接收IP组播报文.MulticastSocket是DatagramSocket的子类,它增加了加入和离开组

  • Python使用socket实现组播与发送二进制数据

    什么是组播 点对点连接可以处理很多通信需求,不过随着直接连接数的增加,在多对通信方之间传递相同的消息会变得越来越困难. 单独地向各个接收方发送消息会耗费额外的处理时间和带宽,这对于诸如完成流视频或音频操作的应用来说,代码会出现显著的性能问题. 而使用组播(multicast)向多个端点同时发送消息可以得到更好的效率,因为网络基础设施可以确保数据包会被传送到所有接收方. 组播消息总是使用UDP发送,因为TCP需要提供一对通信系统.组播的地址被称为组播组,这是常规的IPv4地址范围的一个子集(224

随机推荐