当前位置: 首页 > news >正文

快速入门!低功耗4G模组跟服务器之间的加密通信,千万不能错过!

低功耗4G模组因其高效能和低能耗的特点,被广泛应用于各种智能设备中。然而,随着设备数量的激增和数据传输的频繁,安全问题也日益凸显。为了保障数据的安全性,加密通信成为了不可或缺的一环。

本文将为您详细介绍如何快速入门,实现低功耗4G模组与服务器之间的加密通信~

 


1、编写脚本

1.1 准备资料

Air780E开发板

Air780E开发板设计资料

LuatOS-Air780E/网络加密通信程序源码demo

 TCP/UDP 测试服务器

API介绍说明

1.2 程序详解

1.2.1 首先配置联网配置

--=============================================================-- 测试网站 https://netlab.luatos.com/ 点击 打开TCP 获取测试端口号-- 要按实际情况修改local host = "112.125.89.8" -- 服务器ip或者域名, 都可以的local port = 45186           -- 服务器端口号local is_udp = false        -- 如果是UDP, 要改成true, false就是TCPlocal is_tls = true        -- 加密与否, 要看服务器的实际情况--=============================================================

1.2.2 联网后,创建联网成功后,对收发数据事件的处理函数

local function sockettest()-- 等待联网sys.waitUntil("IP_READY")-- 时间同步socket.sntp()-- 开始正在的逻辑, 发起socket链接,等待数据/上报心跳local taskName = "sc"local topic = taskName .. "_txrx"log.info("topic", topic)local txqueue = {}--[[创建一个任务线程@param1     function   任务函数名,用于resume唤醒时调用@param2     string     任务名称,用于唤醒任务id@param3     function   接收到非目标消息时的回调函数@param4     any        任务函数fun的可变参数@return     number     返回该任务的线程号]]sysplus.taskInitEx(sockettask, taskName, netCB, taskName, txqueue, topic)while 1 dolocal result, tp, data = sys.waitUntil(topic, 30000)log.info("event", result, tp, data)if not result then-- 等很久了,没数据上传/下发, 发个日期心跳包吧table.insert(txqueue, os.date())sys_send(taskName, socket.EVENT, 0)elseif tp == "uplink" then-- 上行数据, 主动上报的数据,那就发送呀table.insert(txqueue, data)sys_send(taskName, socket.EVENT, 0)elseif tp == "downlink" then-- 下行数据,接收的数据, 从ipv6task来的-- 其他代码可以通过 sys.publish()log.info("socket", "收到下发的数据了", #data,"data:",data)endendend

1.2.3 联网函数

function sockettask(d1Name, txqueue, rxtopic)-- 打印准备连接的服务器信息log.info("socket", host, port, is_udp and "UDP" or "TCP", is_tls and "TLS" or "RAW")-- 准备好所需要的接收缓冲区local rx_buff = zbuff.create(1024)local netc = socket.create(nil, d1Name)socket.config(netc, nil, is_udp, is_tls)log.info("任务id", d1Name)while true do-- 连接服务器, 15秒超时log.info("socket", "开始连接服务器")sysplus.cleanMsg(d1Name)local result = libnet.connect(d1Name, 15000, netc, host, port)if result thenlog.info("socket", "服务器连上了")--向服务器发送数据libnet.tx(d1Name, 0, netc, "helloworld")elselog.info("socket", "服务器没连上了!!!")endwhile result do-- 连接成功之后, 先尝试接收-- log.info("socket", "调用rx接收数据")local succ, param = socket.rx(netc, rx_buff)if not succ thenlog.info("服务器断开了", succ, param, ip, port)breakend-- 如果服务器有下发数据, used()就必然大于0, 进行处理if rx_buff:used() > 0 thenlog.info("socket", "收到服务器数据,长度", rx_buff:used())local data = rx_buff:query() -- 获取数据sys.publish(rxtopic, "downlink", data)rx_buff:del()end-- log.info("libnet", "调用wait开始等待消息")-- 等待事件, 例如: 服务器下发数据, 有数据准备上报, 服务器断开连接result, param, param2 = libnet.wait(d1Name, 15000, netc)log.info("libnet", "wait", result, param, param2)if not result then-- 网络异常了, 那就断开了, 执行清理工作log.info("socket", "服务器断开了", result, param)breakelseif #txqueue > 0 then-- 有待上报的数据,处理之while #txqueue > 0 dolocal data = table.remove(txqueue, 1)if not data thenbreakendresult,param = libnet.tx(d1Name, 15000, netc,data)log.info("libnet", "发送数据的结果", result, param)if not result thenlog.info("socket", "数据发送异常", result, param)breakendendend-- 循环尾部, 继续下一轮循环end-- 能到这里, 要么服务器断开连接, 要么上报(tx)失败, 或者是主动退出libnet.close(d1Name, 5000, netc)-- log.info(rtos.meminfo("sys"))sys.wait(30000) -- 这是重连时长, 自行调整endend

2、烧录代码到硬件

2.1 正确连接电脑和4G模组电路板

使用带有数据通信功能的数据线,不要使用仅有充电功能的数据线;

2.2 识别4G模组的boot引脚

在下载之前,要用模组的boot引脚触发下载, 也就是说,要把4G模组的boot引脚拉到 1.8v,或者直接把boot引脚和VDD_EXT引脚相连。我们要在按下BOOT按键时让模块开机,就可以进入下载模式了。

具体到 Air780E开发板,

2.2.1 当我们模块没开机时,按着BOOT键然后长按PWR开机。

2.2.2 当我们模块开机时,按着BOOT键然后点按重启键即可。

图片

2.3 识别电脑的正确端口

判断是否进入BOOT模式:模块上电,此时在电脑的设备管理器中,查看串口设备, 会出现一个端口表示进入了boot下载模式,如下图所示:

图片

当设备管理器出现了3个连续数字的com端口,并且每个数字都大于4,这时候, 硬件连接上就绪状态,恭喜你,可以进行烧录了!

2.4 新建项目

首先,确保你的 LuaTools 的版本,上大于 2.2.13 版本的。

在 LuaTools 的左上角上有版本显示的,如图所示:

图片

LuaTools 版本没问题的话, 就点击 LuaTOols 右上角的“项目管理测试”按钮,如下图所示:

图片

这时会弹出项目管理和烧录管理的对话框,如下图:

新建一个项目

注意:这里截图使用的hello world项目的烧录教程,烧录的时候要将脚本换成本次demo的。

图片

2.5 开始烧录

选择780E板子对应的底层core和刚改的main.lua脚本文件。下载到板子中。

图片

图片

点击下载后,我们需要进入boot模式才能正常下载,在(3)(4)小节已经介绍了如何进入boot模式。

图片

3、验证功能

3.1 打开TCP SSL连接测试工具。

图片

3.2 配置端口,tcp连接,是否加密。

图片

3.3 成功连接并发送数据

图片

4、常见问题

5.1 最多同时支持多少个连接?

socket支持多个连接的, 通常最多支持8个。加密连接(TLS/SSL)需要更多内存, 这意味着能容纳的连接数会小很多, 同时也更慢。

5.2 可以与mqtt库同时使用吗?

支持与http/mqtt/websocket/ftp库同时使用, 互不干扰。

以上就是今天的全部内容,你学会了吗?


http://www.mrgr.cn/news/58928.html

相关文章:

  • Kafka-代码示例
  • Zypher Network Layer3 主网上线,“宝藏方舟”活动是亮点
  • QT QDialog::exec()调用时清除部件所有焦点
  • Java 网络下载文件输出字节流
  • 病毒分析-PEID查壳工具
  • 日常记录,使用springboot,vue2,easyexcel使实现字段的匹配导入
  • 计算机强校99+分《数据库》课设
  • Web开发者必看:TypeScript的进阶用法与最佳实践
  • 动态规划 —— 0-1背包问题
  • vue开发的时候,目录名、文件名、函数名、变量名、数据库字段等命名规范
  • C++11中的同步互斥机制详解
  • 04 P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G
  • P1781 宇宙总统
  • MYSQL-查看创建的用户语法(十一)
  • 代码随想录算法训练营第二十七天 | 122.买卖股票的最佳时机Ⅱ 55.跳跃游戏 45.跳跃游戏Ⅱ 1005.K次取反后最大化的数组和
  • Web环境下的Spring Boot酒店房间预订系统
  • [答疑]是不是互联网更适合用DDD
  • 从零开始:构建一个高效的开源管理系统——使用 React 和 Ruoyi-Vue-Plus 的实战指南
  • Spring Boot驱动的Web版酒店客房管理系统
  • 项目需要,写了一个取出8位变量的2bit数据,引发了思考!
  • 「漏洞复现」JEPaaS 低代码平台 j_spring_security_check SQL注入漏洞
  • Element 的Table表格实现列合并(记得先排序、element-plus、列合并、线上已投入使用)
  • 信息安全工程师(72)网络安全风险评估概述
  • Java Web 开发:构建动态与交互式Web应用的基石
  • R语言机器学习算法实战系列(十四): CatBoost分类算法+SHAP值 (categorical data gradient boosting)
  • vscode配色主题与图标库推荐