ESP32 TCP通信交换数据Mixly Arduino编程

news2024/11/13 8:49:10

TCP通信交换数据

在ESP32与ESP32或其它局域网络内主机间传输数据时,TCP是很方便的,特别当我们连接互联网后ESPnow不能用,MQTT又不稳定发送大量的数据,同时蓝牙有其它用途时,那么学会TCP通信协议就变得十分重要。

一、什么是TCP通信?

在使用TCP前我们先了解什么是TCP:

TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它是在IP(Internet Protocol,互联网协议)层之上,为应用层提供可靠的、面向连接的数据传输服务。TCP通过一系列的机制,如序列号、确认应答、超时重传、流量控制、拥塞控制等,来确保数据的可靠传输。

TCP通信的特点:
面向连接:在数据传输之前,必须先建立TCP连接,即三次握手过程。连接建立后,才能进行数据的传输。
可靠性:TCP通过确认应答、超时重传等机制,确保数据的可靠传输。如果数据在传输过程中丢失或出错,TCP会重新发送数据,直到数据被正确接收。
有序性:TCP保证数据按照发送的顺序进行传输,接收端收到的数据顺序与发送端发送的顺序一致。
流量控制:TCP通过滑动窗口机制进行流量控制,防止发送方发送数据的速率过快而导致接收方无法处理。
拥塞控制:TCP通过拥塞窗口、慢启动、拥塞避免、快速重传和快速恢复等算法,来避免网络拥塞的发生。
使用TCP通信最方便的情况:
需要可靠传输的场景:当应用层需要确保数据准确无误地传输到对方时,TCP是首选。例如,文件传输、电子邮件、网页浏览等。
对数据传输顺序有要求的场景:如果应用层需要按照特定的顺序处理接收到的数据,那么TCP的有序性特性就非常有用。
网络条件不稳定或数据传输量大的场景:TCP的流量控制和拥塞控制机制能够很好地应对网络条件不稳定或数据传输量大的情况,确保数据传输的效率和可靠性。
需要建立持久连接的场景:TCP连接一旦建立,就可以持续进行数据传输,直到连接被关闭。这种特性使得TCP非常适合需要建立持久连接的应用场景,如数据库连接、远程登录等。
总之,TCP通信因其可靠性、有序性、流量控制和拥塞控制等特性,在需要确保数据准确无误地传输到对方的场景中最为方便。然而,对于实时性要求较高或对网络延迟敏感的应用场景,可能需要考虑使用UDP(User Datagram Protocol,用户数据报协议)等其他传输层协议。
在这里插入图片描述

二、TCP通信的应用

为了方便的使用TCP通信功能,齐护在Mixly软件上设计了TCP图形化编程库,这样通过例程就可以很快的学习了解TCP通信的应用。

在学习TCP前我们先要了解TCP通信中的客户端各服务器端这两个概念。

TCP通信中,客户端与服务器的区别及功能如下:

客户端:主动发起连接请求的一方,负责向服务器发送数据请求并接收响应。功能包括初始化通信、发送请求、接收响应、数据处理及关闭连接。客户端使用临时的随机端口号,通过主动连接与服务器建立通信。
服务器:等待连接并提供服务的一方,监听特定端口以接收客户端的连接请求。功能包括监听端口、接受连接、处理请求、发送响应及维持连接。服务器使用已知的固定端口号,通过被动监听来等待客户端的连接请求。
两者合作实现数据的可靠传输,确保网络通信的顺利进行,他们都可以向对方发送或接收数据。

三、图形化编程

3-1 图形化编程库说明

采用图形化编程可以快捷方便,同时不用去背代码,对于应用型项目时会非常实用。

我们在齐护ESP32编程库中的wifi项下找到对应的编程块。
在这里插入图片描述

编程块一共有6大块:

1,TCP服务端编程块:定义端口(要与客户端保持一致),接收及发送定义及数据设置,打印IP功能可以确认服务端的IP地址。

2,TCP客户端发送(无接收功能)编程块:定义服务端的IP地址(要与定义的IP网段或路由器的相同),端口号与服务端的一样,发送的内容(字符串)。

3,TCP客户端 发送/接收:发送并接收服务器端的数据。

4,定义热点IP: 主控以热点的方式发起wifi,自定义IP、网关、子网掩码。

5,定义wifi IP:主控重新定义义一套网关及子网掩码,不跟路由器相同。

3-2 服务端接收客户端发送

连接路由器后,自定义服务端接收来自客户端的数据编程。

注:编程块内的定义要用【英文逗号】隔开,而接收块上的地址是用【英文点】隔开的,写法不一样。

服务端接收
在这里插入图片描述

客户端发送
在这里插入图片描述

3-3 服务端与客户端相互收发数据

服务器与客户端都可以相互的发送或接收数据,达到交互的目的。

服务端发送接收
在这里插入图片描述

客户端发送接收
在这里插入图片描述

四、更多资源及课程源文件下载

4-1 更多实用例程可以参考:【齐护AI对话应用案例】;

4-2 课程源文件下载:【ESP32_TCP通信】。

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

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

相关文章

Python数据结构集合的相关介绍

集合是一种无序、可变的数据结构,它也是一种变量类型,集合用于存储唯一的元素。集合中的元素不能重复,并且没有固定的顺序。在Python 提供了内置的 set 类型来表示集合,所以关键字set就是集合的意思。 你可以使用大括号 {} 或者 …

pytest 生成allure测试报告

allure的安装 github地址 allure资产列表 windows下载.zip,解压并配置环境变量PATH;linux下载tar.gz,解压配置; allure作为pytest插件 # 安装 pip install allure-pytest# 执行单元测试,生成allure测试数据&…

如何在内网中与阿里云服务器进行文件传输?[2024详细版]

随着云计算发展,企业和个人选择将数据存储在云端,以提高数据的安全性和可访问性。阿里云作为国内领先的云服务提供商之一,提供了多种云产品和服务。其中,云服务器ECS(Elastic Compute Service)因其灵活性和…

网络初识-相关概念

本篇主要介绍关于网络的相关概念~ 相关概念 局域网: 把几个电脑连接到一起,或者几台电脑连接到同一个路由器,就能构成局域网,局域网中的电脑可以相互通信。 广域网: 将多个局域网连接起来,就构成了范围更…

以一种访问权限不允许的方式做了一个访问套接字的尝试

System.Net.Sockets.SocketException: 以一种访问权限不允许的方式做了一个访问套接字的尝试. 近来做的一个net core的网页,突然有这样的一个提示。上网查询之后,有二种可能,1,管理员角色运行VS2022后重新编译一下项目。2&#x…

9.10javaweb项目总结

1.创建吧 这里的话,是用的那个模态背景来写的,就是可以在原有界面上进行创建。目前就只有这些内容,具体一点就是吧吧的分类弄了一下,然后还有待完善,就是贴吧,吧头像的设置,还是有点问题的&…

AutoSar AP平台的SOMEIP文档的理解笔记

1. SOMEIP报文格式 1.1 SOME/IP消息格式:头格式 1.2 SOME/IP头格式:Request ID (Client ID/Session ID) 1.3 SOME/IP头格式:Message Type [8 Bit] and Return Code [8 Bit] 1.4 SOME/IP消息格式的大小端 1.5 SOME/IP消息格式:序列…

揭秘开发者的效率倍增器:编程工具的选择与应用

文章目录 每日一句正能量前言工具介绍功能特点:使用场景:提高工作效率的方式: 效率对比未来趋势后记 每日一句正能量 这推开心窗之人,可以是亲朋好友,也可以是陌客路人,可以是德高望重的哲人名流&#xff0…

Nexpose v6.6.266 for Linux Windows - 漏洞扫描

Nexpose v6.6.266 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, release Aug 21, 2024 请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.o…

JavaScript --while案例求一个数字的阶乘

求5*4*3*2*1的值 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-w…

Probabilistic Embeddings for Cross-Modal Retrieval 论文阅读

Probabilistic Embeddings for Cross-Modal Retrieval 论文阅读 Abstract1. Introduction2. Related work3. Method3.1. Building blocks for PCME3.1.1 Joint visual-textual embeddings3.1.2 Probabilistic embeddings for a single modality 3.2. Probabilistic cross-modal…

摩托车加装车载手机充电usb方案/雅马哈USB充电方案开发

长途骑行需要给手机与行车记录仪等设备供电&#xff0c;那么&#xff0c;加装USB充电器就相继在两轮电动车上应用起来了。摩托车加装usb充电方案主要应用于汽车、电动自行车、摩托车、房车、渡轮、游艇等交通工具。提供电动车USB充电器方案/摩托车加装usb充电方案/渡轮加装usb充…

深入理解Java虚拟机:Jvm总结-垃圾收集器与内存分配策略

第三章 垃圾收集器与内存分配策略 3.1 意义 Java堆和方法区具有不确定性&#xff1a;一个接口的多个实现类、一个方法的不同条件分支需要的内存可能不一样。程序运行起来才知道到底会创建什么对象&#xff0c;创建多少个对象。动态分配内存和垃圾回收排查内存泄漏和内存溢出时…

FLBOOK一款强大的样本册制作工具

​在数字化时代&#xff0c;样本册的制作与展示已成为企业宣传和业务拓展的重要手段。一款强大的样本册制作工具&#xff0c;不仅能帮助企业高效地打造精美的样本册&#xff0c;还能提升企业的专业形象和市场竞争力。今天&#xff0c;我要向大家介绍一款名为FLBOOK的样本册制作…

【银河麒麟高级服务器操作系统】虚拟机服务器执行systemctl提示timeout——分析全过程及处理建议

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 现象描述 产品信息 产品名称 银河麒麟高级服务…

【Python报错已解决】 raise JSONDecodeError(“Expecting value“, s, err.value) from None

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一&#xff1a;确保JSON字符串完整2.2 …

vue 使用vue-quill-editor 富文本添加源码模式,查看源码功能和表格功能

今天接到个需求&#xff0c;在富文本中增加查看源码和增加表格功能&#xff0c;感觉这种功能手拿把掐&#xff0c;但是奈于平时沉迷于移动端有段时间没写pc了&#xff0c;看了下官方感觉一个头两个大&#xff0c;于是在茫茫文档中各种借鉴&#xff08;抄袭&#xff09;完成了功…

练习:基于TCP协议实现一个网盘系统

一. 题目介绍 请基于TCP协议实现一个网盘系统&#xff0c;包含客户端、服务端&#xff0c;各自需求如下&#xff1a; - 客户端 - 用户注册&#xff0c;注册成功之后&#xff0c;在服务端的指定目录下为此用户创建一个文件夹&#xff0c;该文件夹下以后存储当前用户的数据&…

【python因果推断库15】使用 sci-kit learn 模型进行回归断点分析

目录 导入数据 线性模型和主效应模型 线性模型、主效应模型和交互作用模型 使用bandwidth from sklearn.gaussian_process import GaussianProcessRegressor from sklearn.gaussian_process.kernels import ExpSineSquared, WhiteKernel from sklearn.linear_model import …

存储课程学习笔记5_iouring的练习(io_uring,rust_echo_bench,fio)

我们知道&#xff0c;在处理大量高并发网络时&#xff0c;一般考虑并发&#xff0c;以及设计对应的方案&#xff08;比如select,poll,epoll&#xff09;等。 那么如果频繁进行文件或者磁盘的操作&#xff0c;如何考虑性能和并发&#xff0c;这里就可以考虑用到io_uring。 0&a…