Micropython学习交流群 学习QQ群:786510434 提供多种固件下载和学习交流。
Micropython-扇贝物联 QQ群:31324057 扇贝物联是一个让你与智能设备沟通更方便的物联网云平台
Micropython学习交流群 学习QQ群:468985481 学习交流ESP8266、ESP32、ESP8285、wifi模块开发交流、物联网。
Micropython老哥俩的IT农场分享QQ群:929132891 为喜欢科创制作的小白们分享一些自制的计算机软硬件免费公益课程,由两位多年从事IT研发的中年大叔发起。
MicroPython ESP32 UDP和TCP数据收发通讯综合实例
本示例基于Thonny平台开发。
所需工具网络调试助手
UDP和TCP4种通讯模式
MicroPython ESP32设备作为TCP客户端
MicroPython ESP32设备作为TCP服务端
MicroPython ESP32设备作为UDP客户端
MicroPython ESP32设备作为UDP服务端
根据不同的通讯模式启用对应的代码
if __name__ == '__main__':
# tcpServer()# TCP服务端
tcpClient()# TCP客户端
# UDPServer()#UDP服务端
# UDPClient()#UDP客户端
''' -----------------------------------------------------地址簇 usocket.AF_INET = 2 - TCP / IP - IPv4 usocket.AF_INET6 = 10 - TCP / IP - IPv6 -----------------------------------------------------套接字类型 usocket.SOCK_STREAM = 1 - TCP流 usocket.SOCK_DGRAM = 2 - UDP数据报 usocket.SOCK_RAW = 3 - 原始套接字 usocket.SO_REUSEADDR = 4 - socket可重用 -----------------------------------------------------套接字选项级别 usocket.SOL_SOCKET = 4095 -----------------------------------------------------函数 ''' import socket import network import time host="192.168.0.113"# TCP/UDP客户端IP port = 10010 #端口号 SSID="MERCURY_D268G" PASSWORD="pba5ayzk" wlan=None s=None #-----------------------------------------------------连接WIFI def connectWifi(ssid,passwd): global wlan wlan=network.WLAN(network.STA_IF) #create a wlan object wlan.active(True) #Activate the network interface wlan.disconnect() #Disconnect the last connected WiFi wlan.connect(ssid,passwd) #connect wifi while(wlan.ifconfig()[0]=='0.0.0.0'): time.sleep(1) return True #-----------------------------------------------------TCP消息回调函数 def tlc_msg(msg): print(msg) #-----------------------------------------------------TCP服务器 def tcpServer(): try: connectWifi(SSID,PASSWORD) #连接WIFI ip=wlan.ifconfig()[0] #获取本地IP listenSocket = socket.socket() #创建TCP listenSocket.bind((ip,port)) #绑定本地IP以及端口 listenSocket.listen(1) #最大连接数 listenSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #配置TCP选项 print('Wifi connection succeeded') print('network config:', ip) while True: print("accepting.....") conn,addr = listenSocket.accept() #用户进入获取用户组 print(addr,"connected") while True: data = conn.recv(1024) #读取用户消息 if(len(data) == 0): print("close socket") conn.close() #空消息关闭用户连接 break print(data) ret = conn.send(data) #发送接收到的数据给发送者 except: if(listenSocket): listenSocket.close() wlan.disconnect() wlan.active(False) #-----------------------------------------------------TCP客户端 def tcpClient(): try: connectWifi(SSID,PASSWORD) #连接WIFI ip=wlan.ifconfig()[0] #获取本地IP s = socket.socket() #创建TCP print('network config:', ip) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #配置TCP选项 s.connect((host,port)) #连接指定TCP服务器 s.send("hello ESP32,I am TCP Client") #连接成功向服务器发送消息 while True: data = s.recv(1024) #每次接收1024字节 if(len(data) == 0): #如果收到空消息关闭连接 print("close socket") s.close() break print(data) ret = s.send(data) except: if(listenSocket): listenSocket.close() wlan.disconnect() wlan.active(False) #-----------------------------------------------------UDP服务器 def UDPServer(): try: if(connectWifi(SSID, PASSWORD) == True): #判断WIFI是否连接 s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #创建socket对象 UDP模式 s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #配置socket对象 ip=wlan.ifconfig()[0] #获取本地IP s.bind((ip,port)) #绑定本地IP 指定端口 print('network config:', ip) print('ESP32 UDPServer Start waiting...') while True: data,addr=s.recvfrom(1024) #每次接收1024字节集 print('received:',data,'from',addr) s.sendto(data,addr) #发送接收到的数据给发送者 except: if (s): s.close() wlan.disconnect() wlan.active(False) #-----------------------------------------------------UDP客户端 def UDPClient(): try: if(connectWifi(SSID,PASSWORD) == True): #判断WIFI是否连接 ip=wlan.ifconfig()[0] print('network config:',ip) s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) ##创建socket对象 UDP模式 s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #配置socket对象 while True: s.sendto(b'From ESP32 UDP Sendto \r\n',(host,port)) #直接发送消息给指定IP端口 time.sleep(1) except: if (s): s.close() wlan.disconnect() wlan.active(False) if __name__ == '__main__': # tcpServer()# TCP服务端 tcpClient()# TCP客户端 # UDPServer()#UDP服务端 # UDPClient()#UDP客户端
来自:https://blog.csdn.net/weixin_42880082/article/details/126556071
Copyright © 2014 ESP56.com All Rights Reserved
执行时间: 0.011359930038452 seconds