uniapp 使用 UDP

news2024/11/16 21:37:07

一、搭建UDP服务端,nodejs

const dgram = require("dgram");

const message = Buffer.from("你好,这是一个UDP广播消息");
const port = 3000; // 用你想要的端口替换这里

// 创建一个UDP套接字
const socket = dgram.createSocket("udp4");

// 启用套接字的广播功能
socket.bind(() => {
  socket.setBroadcast(true);
});

// 定义广播地址
const broadcastAddress = "255.255.255.255"; // 用你实际的广播地址替换

// 将消息发送到广播地址
setInterval(() => {
  send();
}, 3000);

function send() {
  socket.send(message, 0, message.length, port, broadcastAddress, (err) => {
    if (err) {
      console.error("发送消息时出错:" + err);
    } else {
      console.log("消息成功发送到 " + broadcastAddress);
    }
    // 如果需要在发送消息后关闭套接字以释放资源
    // socket.close();
  });
}

运行这个文件就行,命令  node 文件名,如

node 1.js

二、搭建UDP客户端,uniapp

1、安装UDP原生插件,点击    udp_client

2、 manifest.json 配置 

 3、代码中使用

const udpClient = uni.requireNativePlugin('udp-client');
export default {
  data: function() {
    return {
      socketPort: 3000,
    }
  },
  () {
    udpClient.setByteSize(2048);

    /**
     * 在设备初始化,监听 3000端口。
     * 假设本设备 IP 为 192.168.2.35
     * 那么服务端,或者其设备,就可以给 192.168.2.35:3000 发送消息了
     */
    udpClient.init(this.socketPort, this.onSocketMsg, this.onSocketError);
  },
  methods: {
    onSocketMsg(resData) {
      // resData 的数据结构:{ host, port, data, hex }
      console.log("接收到消息: " + resData);
      // 收到消息如果想响应
      udpClient.send({
        host: resData.host,
        port: resData.port,
        data: JSON.stringify({code: 1, msg: "我收到消息啦~"}),
        useHex: true, // 使用 hexString ,默认为 false
      });
    },
    onSocketError(errMsg) {
      console.error("socket 异常:" + errMsg);
    },
  },
  onUnload() {
    // 释放 socket,释放端口
    udpClient.release();
  }
}

完结

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

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

相关文章

《TCP/IP详解 卷一:协议》第5章的IPv4数据报的IHL字段解释

首先说明一下,这里并不解释整个IPv4数据报各个字段的含义,仅仅针对IHL字段作解释。 我们先看下IPv4数据报格式 对于IHL字段, 《TCP/IP详解 卷一:协议》这么解释: IPv4数据报。头部大小可变,4位的IHL字段…

队列的链式存储结构与实现

前言 在前面我们学习了队列的概念与循环队列,我们知道了循环链表的队列长度事先就得确定好,但是实际中队列长度我们事先大多不知道,所以还是得研究一下动态的队列长度的队列储存与实现。 虽然顺序存储也可以通过realloc来实现扩容&#xff0c…

使用Postman快速复现浏览器的请求(包括生成调用代码)

前言 大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 好久没有写开发类的工具使用文了,这…

Tigger绕过激活锁/屏幕锁隐藏工具,支持登入iCloud有消息通知,支持iOS12.0-14.8.1。

绕过激活锁工具Tigger可以用来帮助因为忘记自己的ID或者密码而导致iPhone/iPad无法激活的工具来绕过自己的iPhone/iPad。工具支持Windows和Mac。 工具支持的功能: 1.Hello界面两网/三网/无基带/乱码绕过,可以完美重启,支持iCloud登录、有消…

Leetcode—2.两数相加【中等】

2023每日刷题(十五) Leetcode—2.两数相加 迭代法实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l…

损坏的视频不能观看,还能修复吗?

3-1 在日常的生活或者工作中,特别是做摄像工作的人,有一定的概率会遇到损坏的视频文件,比如相机突然断电、无人机炸机等,都有可能导致保存的视频文件损坏。 如果遇到这种情况,该如何修复这种损坏的视频文件&#xff…

[架构之路-248/创业之路-79]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 供应链管理

目录 前言: 一、企业信息化的结果:常见企业信息化软件 1.1 供应链管理 1.1 什么是供应链与供应链管理What 1.2 为什么需要供应链管理系统Why? 1.3 谁需要供应链管理系统who? 1.4 供应链管理在企业管理中的位置where 1.5 什…

CS224W4.1——PageRank

在这篇中,我们将关注如何将图表示为矩阵,并讨论我们可以探索的后续属性。我们定义了PageRank的概念,进一步探索随机游走,并引入矩阵分解作为生成节点嵌入的视角。在第一部分,我们将介绍PageRank作为在图中对节点重要性…

mybarisplus插件(分页与乐观锁)

文章目录 1.分页插件2.自定义分页3.乐观锁3.1 场景3.2 乐观锁与悲观锁3.3 模拟修改冲突3.4 乐观锁解决问题 1.分页插件 MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能 添加配置类MyBatisPlusConfig Configuration MapperScan("com.atguigu.mybatis…

Cordova插件开发二:高精度定位之卫星数据解析

文章目录 1.最终效果预览2.坐标获取方法3.在公共类中封装获取坐标的通用方法4.插件js中封装startGeoLocation方法5.插件主界面封装的方法1.最终效果预览 2.坐标获取方法 let obj = Object.assign({}, this.mapConfig.mapLocationObj)obj.isKeepCallBack = falselet res = await…

v免签易支付二开版源码+pc端订单监控+支付宝免挂机可回调

v免签二开版,又叫做v免签易支付版。它相当于是通过易支付的方式对接,不用单独搭建易支付系统了 安装教程 1、网站目录->运行目录 设置为public并保存 2、伪静态 设置为thinkphp并保存 3、打开网站目录 config/database.php ,设置好您的m…

cdrx8和2020哪个版本更好用?有什么区别

经过多年的发展,cdr推出了很多优秀的版本,并顺应时代的发展更新了多项功能。随着cdr推出的软件版本增多,小伙伴们可选择的产品也在增多,那么该怎么选择呢?本文会给大家介绍cdrx8和2020的区别,CDRX8和2020哪…

大语言模型(LLM)综述(五):使用大型语言模型的主要方法

A Survey of Large Language Models 前言6 UTILIZATION6.1 In-Context Learning6.1.1 提示公式6.1.2 演示设计6.1.3 底层机制 6.2 Chain-of-Thought Prompting6.2.1 CoT的上下文学习6.2.2 关于CoT的进一步讨论 6.3 Planning for Complex Task Solving6.3.1 整体架构6.3.2 计划生…

【css3】涟漪动画

效果展示 dom代码 <div class"mapSelfTitle66"><div></div> </div> 样式代码 .mapSelfTitle66{width:120px;height:60px;position: relative;&>div{width:100%;height:100%;background: url("~/assets/images/video_show/err…

中国工科研究生200多篇英文论文中最常见的习惯(The Most Common Habits from more than 200 English Papers written by Gradua)

文章目录 中国工科研究生200多篇英文论文中最常见的习惯&#xff08;The Most Common Habits from more than 200 English Papers written by Graduate Chinese Engineering Students&#xff09;1 常见错误1.1 “a, an, the” 冠词的使用1.2 避免使用超过60个单词的长句1.3 通…

Project#1: Buffer Pool

文章目录 Task#1 - LRU-K Replacement PolicySizeRecordAccessSetEvictableEvictRemoveBugsTests Task#2 - Disk SchedulerStartWorkerThreadBUGs- [✅] BUG: std::abortTest Task#3 - Buffer Pool ManagerLearning NoteNewPageFetchPageUnpinPageDeletePageLearningNoteBugs- …

【OpenCV实现图像:用Python生成图像特效,报错ValueError: too many values to unpack (expected 3)】

文章目录 概要读入图像改变单个通道黑白特效颜色反转将图像拆分成四个子部分 概要 Python是一种功能强大的编程语言&#xff0c;也是图像处理领域中常用的工具之一。通过使用Python的图像处理库&#xff08;例如Pillow、OpenCV等&#xff09;&#xff0c;开发者可以实现各种各…

Python框架之Flask入门和视图

一、Flask入门和视图 需要安装Pycharm专业版 1. Flask简介 Python后端的2个主流框架 Flask 轻量级框架Django 重型框架 Flask是一个基于Python实现的web开发微框架 官方文档&#xff1a;https://flask.palletsprojects.com/ 中文文档&#xff1a;https://dormousehole.readthe…

【TES720D】青翼科技基于复旦微的FMQL20S400全国产化ARM核心模

板卡概述 TES720D是一款基于上海复旦微电子FMQL20S400的全国产化核心模块。该核心模块将复旦微的FMQL20S400&#xff08;兼容FMQL10S400&#xff09;的最小系统集成在了一个50*70mm的核心板上&#xff0c;可以作为一个核心模块&#xff0c;进行功能性扩展&#xff0c;特别是用…