UDP通信,适用于实时性要求高的场景,一般作为流媒体应用、语音交流、视频会议所使用的传输层协议,还有许多基于互联网的电话服务使用的VOIP(基于IP的语音)也是基于UDP运行的,实时视频和音频流协议旨在处理偶尔丢失的数据包,因此,如果重新传输丢失的数据包,则只会发生质量略有下降,而不是出现较大的延迟。
UDP优点:简单,轻量。
UDP缺点:没有流控制,没有应答确认机制,不能解决丢包、重发、错序问题。

并不是所有使用UDP协议的应用层都是不可靠的,应用程序可以通过增加确认和重传机制,自己实现可靠的数据传输,

下面我们使用nodejs16来实现一个简单的UDP通信。

服务端

//server.mjs
import dgram from 'dgram'const server = dgram.createSocket('udp4',(msg,rinfo)=>{console.log(msg.toString(),rinfo.address,rinfo.port,rinfo.size)server.send('Hello I\'m server:',rinfo.port, rinfo.address)
})server.on('error', (err)=>{console.log(err)
})server.on('listening', ()=>{const address = server.address()console.log(`server listening ${address.address} on ${address.port}`)
})server.bind(41234)

客户端

//client.mjs
import dgram from 'dgram'const client = dgram.createSocket('udp4', (msg, rinfo)=>{console.log(msg.toString(),rinfo.address,rinfo.port,rinfo.size)
})client.connect(41234,'127.0.0.1',()=>{client.send('World2! from client',(err)=>{if(err) console.log(err)// client.close()})
})client.on('error', (err) => {console.log(JSON.stringify(err))
})client.on('connect', ()=>{const rinfo = client.remoteAddress()console.log('connect to: ',rinfo.address,rinfo.port,rinfo.family)client.send('World! from client',rinfo.port,rinfo.address)
})setTimeout(()=>{client.close()
},2000)

运行效果

服务端

客户端

NodeJS中的UDP通信相关推荐

  1. Java21-day12【网络编程(网络编程入门(ip地址、端口、协议、InetAddress)、UDP通信程序、TCP通信程序)】

    视频+资料[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java世界的大门)--博 ...

  2. udp ue4 通讯_UE4 UDP通信

    本篇文章给大家介绍的是UE4中的UDP通信,用C++创建两个Actor类,分别为UDPSend(发送)   和  UDPRecive(接收). 代码如下: UDPSend.h // Fill out ...

  3. C#中UDP通信过程中出现:远程主机强迫关闭了一个现有的连接0x80004005】的解决方法

    在UDP通信过程中, 使用try...catch语句接受数据时,总是会出现一个错误: System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭 ...

  4. Qt中UDP通信的简单示例

    udp通信分为发送端和接收端,通信步骤可以分为以下: 接收端: 创建QUdpSocket对象.在.h文件中添加类的前置声明,定义该类的指针,在.cpp的构造函数中定义指向该类的指针. bind().绑 ...

  5. TCP与UDP协议初步学习——网络环境中分布式进程通信的基本概念

    TCP与UDP协议初步学习--网络环境中分布式进程通信的基本概念 一.单机系统中进程通信方法 进程和进程通信是操作系统中最基本的概念,首先通过回忆操作系统课程中,关于单击系统中进程和进程通信的问题描述 ...

  6. 在Unity3d项目中利用Udp进行局域网内通信

    在Unity3d项目中利用Udp进行局域网内通信 实现一个用于存储通信息的Quene using System.Collections; using System.Collections.Generi ...

  7. android udp 广播通信,Android开启热点进行UDP通信中的坑

    1.写在前面: 2018年的第一篇文章,最近在使用UDP协议进行硬件通信,大家都知道UDP协议通信必须在同一个局域网内,但是每个用户家的wifi都是不一样的,硬件设备是无法只值连接到用户家的wifi的 ...

  8. wifi udp android,Android开启热点进行UDP通信中的坑

    1.写在前面: 2018年的第一篇文章,最近在使用UDP协议进行硬件通信,大家都知道UDP协议通信必须在同一个局域网内,但是每个用户家的wifi都是不一样的,硬件设备是无法只值连接到用户家的wifi的 ...

  9. unity中UDP通信

    unity中UDP通信 服务器: using System; using System.Collections; using System.Collections.Generic; using Sys ...

最新文章

  1. R语言ggplot2可视化箱图(boxplot)时忽视异常值(outlier)并重新分配坐标轴的范围是的可视化的箱图可以有效显示箱体实战
  2. Java之定时任务详解
  3. adc如何获取周期_ADI小课堂丨今天咱们实例分析一款精密型ADC
  4. 窗口分析函数_2_生成同值重复排名序号
  5. 时钟在微型计算机中作用,微型计算机系统中的实时时钟
  6. 查看python版本命令
  7. 三维旋转矩阵_旋转之一 - 复数与2D旋转
  8. React 一些相关的技巧
  9. 光域网(IES)在Unity3d中的应用【2020】
  10. 佳博打印机ip地址修改软件_【动手实践】树莓派将有线打印机转为无线共享打印机 by xinlong...
  11. Qt天气助手小程序(QCutomPlot绘图)
  12. 新员工月度计划制定心得
  13. 牛客 小米校招 找“异数” 高精度进制转化
  14. 机械硬盘显示位置不可用无法访问介质受写入保护
  15. 一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。
  16. 计算机维护服务蓝图,体验|如何通过服务设计建立品牌感知与品牌认同
  17. java爬虫小说网项目_java爬虫之下载txt小说
  18. 商务办公软件应用与实践【2】
  19. Scala 可变集合体系、不可变集合体系 详解
  20. tp5 验证码输入错误后自动刷新

热门文章

  1. android editext下拉框,android实现下拉框和输入框结合
  2. 单片机毕设分享 stm32的RFID与指纹识别的门禁系统
  3. java读取word带格式化,poi读取word简历(伪word格式的doc文件 )提取文本内容报错...
  4. 如何修改网上下载word简历模板的照片
  5. RobotFramework功能自动化测试框架基础篇
  6. 华为机试C语言-组成最大数
  7. layui富文本编辑器layedit增加上传视频与音频功能
  8. 如何关闭或开启隧道适配器
  9. 第四讲财务报表的逻辑架构(财务分析与决策)
  10. 辽宁省重大装备中心船舶与核产业部部长胡新文一行莅临云创