一、概念1.TCP/IP协议简介 TCP/IP (Transmission Control Protocol / Internet Protocol)传输控制协议/网间协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的 RFC 793 定义从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。
引言: 客户端connect接口, 代表着三次握手, 默认为阻塞模式, 在握手期间, 客户端程序只能处于等待状态, 不能处理其他的业务, 其次,如果握手失败, 还会等connect计时器时间, 大约是在75s左右。一、阻塞connect存在的几大问题。1、阻塞期间不能处理其他业务。 2、如果连接失败, 等待的时间过长。二、实现非阻塞connect的方法1、将创建sockfd设置为阻塞模式int o
IO阻塞模型(blocking IO)在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样: 所以,blocking IO的特点就是在IO执行的两个阶段(等待数据和拷贝数据两个阶段)都被block了。from socket import *
server = socket(AF_INET,SOCK_STREAM)
server.b
非阻塞IO与阻塞IOIO就是输入—输出操作系统通常提供了两种调用方式,阻塞调用和非阻塞调用阻塞式调用: 调用结果返回之前,当前线程处于阻塞态(阻塞态CPU不会分配时间片),调用线程只有在得到调用结果之后才会继续执行非阻塞式调用:调用执行之后,当线程不会停止执行,只需要过一段时间来检查一下有没有结果返回即可。非阻塞式调用的问题我们没有获取到结果,因为是异步的我们为了得到完整的数据,需要频繁的去确定度
文章目录1. 模块选型2. 启动SoftAP模式3. 创建TCP服务端4.总结 最近实现了一个无线数据采集模块,可以通过无线方式传输采集到的数据到手机或者PC,免除了连线的烦恼。使用手机作为上位机可以接收数据及发送控制命令,不用带着沉重的PC,在现场调试或者不方便连线的情况下方便快捷。 模块使用stm32作为主控采集数据,ESP32作为无线模块,芯片间使用SPI交互数据,数据量小可以使用蓝牙B
转载
2023-11-30 08:23:16
364阅读
基于STM32F767通过STM32CubeMX实现ModbusTCP读多为寄存器操作(后续)由于上篇着重介绍了实现功能的代码,以至于我没有和大家讲清楚FreeModbus应该怎么移植,在此先抱歉浪费大家时间了。 接下来我要开始实操怎么成功移植Freemodbus在STM32上(以下方法可以满足所有STM32设备)实验准备:去FreeModbus官网下载Modbus的源码包,链接直接放上:Free
转载
2024-04-08 19:02:48
773阅读
本实验使用 ESP32 通过 STA 模式实现 TCP 的客户端通信。 这个实验的代码为工程“4_5_wifi_TcpClient”目录。4.5.1. 实验内容(1) 在 STA 模式下,电脑是 TCP 服务器,ESP32 开发板是 TCP 客户端实现通信。4.5.2. TCP 通信简介请回头看 4.4.2,这个实验我们实现的是框图的左边部分(TCP 客户端):4.5.3. ESP32 函数介绍这
转载
2024-03-16 11:15:58
123阅读
文章目录目的WebSocket使用方法使用演示更多说明EventSource使用方法使用演示更多说明总结 目的WebSocket和EventSource是HTML5开始提供的功能。WebSocket可以在单个TCP连接上进行全双工通讯;EventSource可以由服务器主动向客户端推送消息。两个功能可以大大提升web应用的数据交互的性能。这篇文章将介绍ESPAsyncWebServer库中这两个
转载
2024-08-17 13:34:52
159阅读
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。 1、 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 “Hellow World”。 2、 巧用eclipes编辑器,官方教程在在Windows下搭建esp32开发环境,打印 “Hellow World”。 3、 认识基本esp32的GPIO接口,开始点亮您的第
转载
2024-02-22 11:59:57
373阅读
本次开发需要用到MQTT服务器,因此需要现在arduino中 安装PubSubClient library代码:#include<WiFi.h>
#include<PubSubClient.h>
const char *id="wifi名称";
const char *psw="wifi密码";
const char *mqttServer="服务器ip地址(域名)";
转载
2024-04-08 14:07:46
101阅读
测试时使用的程序:Marvell 88W8801 WiFi模块创建或连接热点,并使用lwip2.1.2建立http服务器(20200208版)(F1程序/HAL库版本SDIO接口)一、修改前的速度:TCP:很慢很慢,才7KB/s。。。收到747520字节,用时100.64秒,速率7.25KB/s 收到747520字节,用时100.84秒,速率7.24KB/s 收到747520字节,用时102.21
转载
2024-05-11 20:41:35
209阅读
ESP32例程为C语言开发,并非Python/Arduino/AT指令开发,基于ESP-IDF_V4.2框架库,采用纯C语言开发,开发工具为Visual Studio CodeAndroid(安卓)例程全部为原生Android开发,例程全部支持到SDK版本29 Android 10.0(Q) 开发工具为Andirod Studio 4.0PC源码例程为Visual Studio 201
转载
2024-05-13 22:36:16
241阅读
文章目录1. 硬件、接线、环境配置2. ESP32 下的 wifi 基本功能 (arduino)2.1 Wifi 模式切换2.2 AP模式 - 开启 wifi 热点2.3 STA模式 - 连接已有 wifi3. ESP32 下 TCP server/client 通信3.1 TCP / UDP 的极简释义3.2 ESP32 TCP 通信小例子3.2.1 准备工具3.2.2 通信流程3.2.3 简
转载
2024-05-06 13:15:37
436阅读
本实验使用 ESP32 通过 AP 和 STA 两种方法实现 TCP 的服务器通信。 这个实验的代码为工程“4_4_wifi_TcpServer”目录。4.4.1. 实验内容(1) 在 AP 模式下,手机是 TCP 客户端,ESP32 开发板是 TCP 服务器实现通信。 (2) 在 STA 模式下,电脑是 TCP 客户端,ESP32 开发板是 TCP 服务器实现通信。4.4.2. TCP 通信简介
转载
2024-02-14 20:22:42
636阅读
一、Windows系统管理什么是 BIOS?如何进入BIOS? BIOS基本输入输出系统,一般按DEL或F2进BIOS设置程序。什么是虚拟机? 虚拟机运行在计算机上的一款软件程序,模拟计算机硬件功能为其他软件程序提供一个独立的计算机环境。虚拟机运行模式?1)寄居架构 作为应用软件安装在操作系统上 ,可以在此应用软件上安装多个操作系统 2)原生架构 虚拟机软件
现在开始写...lwip即可以用socket 的API 也可以用 netconn 的API实现网络通信socket 本身其实就是在netconn 上的再一次封装,所以使用起来更快捷(好多东西又封装了一下),但是由于我以前做的项目都是用的netconn ,所以咱还是用 netconn 实现毕竟用的更底层,更稳定,更省资源
转载
2024-07-29 17:24:42
106阅读
MQTT在物联网领域是十分常见的协议,{PLC,IOT}>ESP32项目主要服务的领域是物联网,{PLC,IOT}>ESP32技术方案的实质是用PLC的形式为工业互联网、数字化工程提供便利的工具,因此MQTT是基本的内置功能,是承载IOT相关功能的基础组件。ESP32似乎为联网而生,内置的WIFI、MQTT client 协议组
转载
2024-10-17 10:31:28
66阅读
一、实验准备(1)stm32f767开发板,下载安装STM32CubeMX; (2)实现LWIP的引入,具体参考STM32cubeMX将STM32F767+LAN8720+LwIP+FreeRTOS的以太网实现确保可以PING通; (3)下载ModbusTCP包,附上楼主现有包链接:https://pan.baidu.com/s/1G2MblV6BSW2OHU62038B1g 提取码:53os ;
转载
2024-06-05 06:38:05
483阅读
#include <fcntl.h>#include <unistd.h>int fcntl(int fd, int cmd, ... /* arg */ );/* 样例 */int flags =
原创
2023-02-17 08:37:41
110阅读
Linux操作系统中提供了丰富的文件操作接口,其中的fcntl函数是一个非常重要的系统调用。在文件操作中,有时候我们需要对文件进行非阻塞操作,以提高程序的效率和性能。在这篇文章中,我们将重点介绍在Linux中如何使用fcntl来实现非阻塞文件操作。
fcntl函数是POSIX标准中定义的文件控制函数,它可以用来改变一个已打开文件的属性。在Linux中,fcntl函数的原型定义如下:
```c
原创
2024-04-10 10:38:06
169阅读