ESP32+micropython+作为WiFi热点与PC通信+TCP/IP接收并返回数据

ESP32+作为WiFi热点+接收并返回数据

ESP32代码

#  ESP32 作为AP
#  作为服务器 接收数据 并echo#  ESP32 作为AP  即wifi热点
import network
import utime# 配置ESP32为AP模式
ssid = 'ESP32_AP'
password = '12345678'
authmode = 4  # WPA2-PSK# 创建WLAN对象
wlan = network.WLAN(network.STA_IF)  # 默认情况下,STA_IF接口已创建,但我们将其禁用
wlan.active(False)  # 禁用STA接口
 
ap_if = network.WLAN(network.AP_IF)  # 创建AP接口
ap_if.active(True)
ap_if.config(essid=ssid, password=password, authmode=authmode)print('AP mode started with SSID:', ssid)
print('Password:', password)# 使用socket库,编写tcp/ip程序,作为服务器 
import socketdef handle_request(client_socket):"""处理对方发送过来的数据然后回送相对应的数据关闭连接时,return退出"""while True:try:# 接收数据,设置超时以避免阻塞client_socket.settimeout(5)  # 5秒超时# 5.1 接收数据recv_content = client_socket.recv(1024)# 5.2 检查是否收到了空字节串(表示连接已关闭)if not recv_content:print('Client disconnected without sending data.')client_socket.close()return# 5.3 解码数据decoded_content = recv_content.decode("utf-8")print('Received data:', decoded_content)# ...(处理数据的代码)#5.4 发送数据response = "$echo*"client_socket.send(response.encode("utf-8"))except OSError as e:# 捕获OSError异常,这通常是由于网络问题导致的print('Error receiving data:', e)# 关闭客户端连接
            client_socket.close()print('Client connection close.')return #continue#except UnicodeDecodeError as e:# 尽管使用了errors="ignore",但理论上仍然可以捕获这个异常(尽管不太可能)#    print('Error decoding data:', e)finally:print('Client connection recv-send once.')def socket_loop():# 1. 创建套接字server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 为了保证在tcp先断开的情况下,下一次依然能够使用指定的端口,需要设置server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)# 2. 绑定本地信息server_socket.bind(("192.168.4.1", 8081)) # 绑定到所有接口上的8081端口print("server_ip "+'192.168.4.1'+"port "+"8081")# 3. 变成监听套接字server_socket.listen(5)  # 开始监听连接print('Server started, waiting for connections...')while True:# 4. 等待客户端的链接client_socket, client_addr = server_socket.accept()print('Client connected from:', client_addr)# 5. 客户端的链接处理
        handle_request(client_socket)# 6. 关闭套接字
    tcp_server_socket.close() 
# 无限循环,持续检查连接的客户端
while True:# 获取已连接的客户端列表
    socket_loop()utime.sleep(1)  # 延时1秒

PC机上的调试软件: NetAssist5.0.8

 

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

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

相关文章

ESP32+micropython+作为WiFi热点+接收并返回数据

ESP32+作为WiFi热点+接收并返回数据# ESP32 作为AP # 作为服务器 接收数据 并echo# ESP32 作为AP 即wifi热点 import network import utime# 配置ESP32为AP模式 ssid = ESP32_AP password = 12345678 authmode = 4 # WPA2-PSK# 创建WLAN对象 wlan = network.WLAN(networ…

docker环境一个奇怪的问题,容器进程正常运行,但是docker ps -a却找不到容器,也找不到镜像

一: 问题: docker环境一个奇怪的问题,使用容器跑的进程正常提供服务,在服务器上也能看到对应的端口正在监听,但是docker ps -a却找不到容器,也找不到镜像. 查看我使用docker容器启动服务的端口 正在监听docker images 找不到对应的镜像docker ps -a 找不到任何容器二: 排查过…

jenkins配置github token

GITHUB_TOKEN是一个由GitHub提供的,用于通过GitHub API在GitHub上执行各种操作的访问令牌。它可以授予对GitHub仓库、组织和包的各种级别的访问权限。这个令牌可以被用于从内部GitHub Actions工作流中访问仓库,或从外部系统和服务中访问GitHub。 这里有一些GITHUB_TOKEN的常见…

【笔记软件】Obsidian的使用

背景 之前使用的是语雀和有道云笔记。语雀,偏向知识库的使用。有道云笔记,偏向随笔的使用。 但是这2个都是联网版的笔记,断网或服务器异常都会影响使用,尤其语雀。而且有些知识库和随笔会有些私密内容,也不方便放在云端。 随后也尝试了有些离线或本地优先的笔记软件,印象…

coca phrase的collocates MI计算比较

declare|declared war declare war declared war

JDK安装及配置

JDK安装及配置 下载进入oracle官网https://www.oracle.com/ 找到Product选项 点击Download Java进入下载页面 页面显示的是最新版本的jdk,在Java archive中有历史版本的jdk安装解压安装包配置环境变量 我的电脑>属性>高级系统设置>环境变量添加环境变量JAVA_HOME并配…

Prime1_解法一:cms渗透 内核漏洞提权

Prime1_解法一:cms渗透 & 内核漏洞提权目录Prime1_解法一:cms渗透 & 内核漏洞提权信息收集主机发现nmap扫描tcp扫描tcp详细扫描22,80端口udp扫描漏洞脚本扫描目录爆破dirsearchWeb渗透wfuzz常见的 wfuzz 过滤器:获得wordpress后台权限wordpress cms渗透WordPress…

Python当中的ParamSpec和TypeVar

Python当中的ParamSpec和TypeVar 内容 In Python, the code snippet: P = ParamSpec("P") R = TypeVar("R")defines two things related to typing, specifically for generic programming. Lets break down what each one means: 1. P = ParamSpec("…