nodejs中使用UDP传递信息

 什么是UDP?

UDP(User Datagram Protocol,用户数据报协议)是一种无连接的网络传输协议,位于 OSI 模型的传输层(第四层),与 TCP(传输控制协议)同为互联网的核心协议之一。它具有以下特点:

无连接

  • 发送数据前无需建立连接(如 TCP 的三次握手),直接发送数据包。
  • 优点:低延迟,适用于实时应用(如视频流、语音通话)。
  • 缺点:不保证数据到达或顺序

不可靠传输

  • 不保证数据包:
    • 顺序性(可能乱序到达)。
    • 完整性(可能丢失)。
    • 到达(无确认机制)

怎么在nodejs中使用UDP?

直接上代码:

服务端

// 创建udp *************************************************
const dgram = require("dgram");
const server = dgram.createSocket("udp4");
// 监听 
server.on("message", (msg, rinfo) => {console.log(`接收到来自 ${rinfo.address}:${rinfo.port} 的消息: ${msg.toString()}`);setInterval(()=>{let t = Date.now()+""// t 必须是Buffer或字符串server.send(t, rinfo.port, rinfo.address, (err, bytes) => {console.log("发送:"+t)});},1000)
});
// 监听建立连接
server.on("listening", () => {console.log("server:" + server.address().port);});
// 注册UDP服务
server.bind("5000");

客户端

// 创建udp *************************************************
const dgram = require("dgram");
const client = dgram.createSocket("udp4");// 监听建立连接
client.on("listening", () => {console.log("udp:" + client.address().port);});
// 注册UDP服务
client.bind(5001);// 向服务器发送消息
setTimeout(()=>{client.send("你好,服务器!","5000","192.168.1.64",(err,bytes)=>{if(err){console.log("消息发送失败!")client.close();return;}client.on('message', (msg, rinfo) => {console.log(`接收到来自服务器 ${rinfo.address}:${rinfo.port} 的响应: ${msg.toString()}`);});})
},5000)

用node启动后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87983.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

App Trace功能实战:一键拉起应用实践

一、App Trace功能概述App Trace是一种用于监控和分析应用启动流程的技术,它可以帮助开发者:追踪应用冷启动/热启动的全过程分析启动过程中的性能瓶颈优化应用启动速度实现应用间的快速拉起二、一键拉起应用的实现方案1. Android平台实现方案1&#xff1…

Flink ClickHouse 连接器数据读取源码深度解析

一、引言 在大数据处理流程中,从存储系统中高效读取数据是进行后续分析的基础。Flink ClickHouse 连接器为我们提供了从 ClickHouse 数据库读取数据的能力,使得我们可以将 ClickHouse 中存储的海量数据引入到 Flink 流处理或批处理作业中进行进一步的分析…

云原生技术与应用-容器技术技术入门与Docker环境部署

目录 一.Docker概述 1.什么是Docker 2.Docker的优势 3.Docker的应用场景 4.Docker核心概念 二.Docker安装 1.本安装方式使用阿里的软件仓库 2.Docker镜像操作 3.Docker容器操作 一.Docker概述 因为 Docker 轻便、快速的特性,可以使应用达到快速迭代的目的。每次小…

第2章,[标签 Win32] :匈牙利标记法

专栏导航 上一篇:第2章,[标签 Win32] :Windows 数据类型 回到目录 下一篇:第2章,[标签 Win32] :兼容 ASCII 字符与宽字符的 Windows 函数调用 本节前言 在初学编程的时候,我们给变量命令的…

从深度学习的角度看自动驾驶

从深度学习的角度看自动驾驶 A Survey of Autonomous Driving from a Deep Learning Perspective 我们探讨了深度学习在自主驾驶中的关键模块,例如感知,预测,规划以及控制。我们研究了自主系统的体系结构,分析了如何从模块化&…

java+vue+SpringBoo基于Hadoop的物品租赁系统(程序+数据库+报告+部署教程+答辩指导)

源代码数据库LW文档(1万字以上)开题报告答辩稿ppt部署教程代码讲解代码时间修改工具 技术实现 开发语言:后端:Java 前端:vue框架:springboot数据库:mysql 开发工具 JDK版本:JDK1.8 数…

【文献笔记】Automatic Chain of Thought Prompting in Large Language Models

Automatic Chain of Thought Prompting in Large Language Models 原文代码:https://github.com/amazon-research/auto-cot 标题翻译:大规模语言模型中的自动思维链提示 1. 内容介绍 在提示词中提供思考步骤被称为思维链(CoT)&…

【Behavior Tree】-- 行为树AI逻辑实现- Unity 游戏引擎实现

行为树简易敌人AI 前言: 有些天没更新新文章了,主要是最近科一有些头疼,而且最近琢磨这个行为树代码有些难受,但是终于熬出头了,MonoGame的系列会继续更新的,今天不说别的就说困扰我两三天的行为树 有限状态…

百度大模型开源,俩条命令、本地启动

百度大模型开源 本地启动手册 安装依赖: python -m pip install paddlepaddle-gpu3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_…

rabbitMQ读取不到ThreadLocal消息的bug

rabbitMQ读取不到ThreadLocal消息的bug 当使用消息队列时,监听队列不会运行到主线程上,线程消息之间是不会共享的,故属于主线程的ThreadLocal就读取不到数据的值 主线程名字:main使用消息队列的线程名字:ntContainer#2…

IDEA Maven报错 无法解析 com.taobao:parent:pom:1.0.1【100%解决 此类型问题】

IDEA Maven报错 无法解析com.taobao:parent:pom:1.0.1【100%解决 此类型问题】 报错日志 PS D:\Learn_Materials\IDEA_WorkSpace\Demo\spring_test_demo> mvn clean install -U [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered whi…

函数-1-字符串函数

函数-1-字符串函数字符串函数函数语法字符串函数的使用字符串函数语法案例演示实战练习字符串函数 函数 函数是一段可以直接被另一端程序调用的程序或代码 语法 SELECT 函数名(参数名)大家可能会有那么一点点疑惑, 为什么执行函数还需要加上SELECT语句? 总结一下, 因为SEL…

打破AI落地困局:易路iBuilder的“垂直深耕+开箱即用”破壁之道

中国企业的数字化转型已步入深水区,人力资源管理作为企业核心竞争力的关键引擎,正经历从“信息化”向“智能化”的范式跃迁。在这场以AI为驱动的组织效能革命中,​​易路人力资源科技​​凭借前瞻性的“软件AI服务”战略,推出国内…

Higress离线部署

1.前提条件检查docker和docker compose是否已经具备 [roothost151 ~]# docker -v Docker version 26.1.4, build 5650f9b [roothost151 ~]# docker composeUsage: docker compose [OPTIONS] COMMANDDefine and run multi-container applications with DockerOptions:--all-res…

利用AI技术快速提升图片编辑效率的方法

通过更换背景或进行其他创意编辑,可以为图片赋予新的生命力和视觉效果,使得创意表达更加自由灵活。这款AI抠图工具堪称强大,依托先进的阿尔法通道技术,能够精准、自然地实现图像抠取与背景更换。操作也非常简单,只需将…

Wend看源码-RAGFlow(上)

前言 最近在github上搜罗Rag相关项目的时候,我根据star 搜索到了目前star 最高的一些RAG 项目 ,其中稳居榜首的就是RAGFlow。 RAG stars:>1000 language:Python pushed:>2025-01-01 github RAG 相关项目搜索结果 为了系统性的学习RAG 技术栈&#…

LangChain实现RAG检索增强

1:启动vllm的openai兼容server: export VLLM_USE_MODELSCOPETrue python -m vllm.entrypoints.openai.api_server --model qwen/Qwen-7B-Chat-Int4 --trust-remote-code -q gptq --dtype float16 --gpu-memory-utilization 0.6 2:构建向量数据库 from langchain_…

Redis基础(6):SpringDataRedis

SpringDataRedis简介 SpringData是Spring中专门进行数据操作的模块,包含了对于各种数据库的集成。其中对Redis的集成模块叫做SpringDataRedis(官网地址:Spring Data Redis)。其最核心的特点就是提供了不同Redis客户端的整合&…

B. Shrinking Array/缩小数组

B. Shrinking Array让我们称一个数组 b 为 i 美丽 ,如果它至少包含两个元素,并且存在一个位置 |bi−bi1|≤1 使得 |x| (其中 x 是 #10# #11# 的绝对值)。给定一个数组 a ,只要它至少包含两个元素,你就可以执行以下操作&#xff1a…

【学习笔记】Linux系统中SSH服务安全配置

一、背景知识 以ubuntu为例,查看ssh服务是否安全并配置,执行 ssh -V ssh的配置文件路径:/etc/ssh/sshd_config 二、SSH服务配置文件 1.端口和监听设置 Port 22 含义:指定SSH服务监听的端口号(默认是22&#xff09…