ESP32笔记(2)TCP通信入门之ESP做服务端与客户端通信
需求
编写代码完成esp32上的tcp服务端,能够为tcp客户端提供eco服务: (1)能够把客户端发送回来的字符串回发给客户端; (2)当客户端发送来“quit”时,结束会话,等待下一次accept.
结合这篇可以更好的理解:TCP通信入门之ESP做客户端与服务端通信
代码
1. 编写代码完成esp32上的tcp服务端,能够为tcp客户端提供eco服务:
(
1)能够把客户端发送回来的字符串回发给客户端;
(
2)当客户端发送来“quit”时,结束会话,等待下一次accept
.
结合这篇可以更好的理解:
[TCP通信入门之ESP做客户端与服务端通信
](https
://blog
.csdn
.net
/weixin_43493559
/article
/details
/108882907)
```python
import network
import socket
import time
SSID
= "xlu"
PASSWORD
= "111222333"
port
= 8085
wlan
= None
listenSocket
= None
flag
= False
def connectWifi(ssid
, passwd
):
global wlan
wlan
= network
.WLAN
(network
.STA_IF
)
wlan
.active
(True)
wlan
.disconnect
()
wlan
.connect
(ssid
, passwd
)
while (wlan
.ifconfig
()[0] == '0.0.0.0'):
time
.sleep
(1)
return True
try:
connectWifi
(SSID
, PASSWORD
)
ip
= wlan
.ifconfig
()[0]
listenSocket
= socket
.socket
()
listenSocket
.bind
((ip
, port
))
listenSocket
.listen
(1)
listenSocket
.setsockopt
(socket
.SOL_SOCKET
, socket
.SO_REUSEADDR
, 1)
print('tcp waiting...')
while True:
print("accepting.....")
conn
, addr
= listenSocket
.accept
()
print(addr
, "connected")
conn
.send
("hello xlu,this is tcp server")
conn
.send
("send quit to close, send accept to close")
while True:
data
= conn
.recv
(1024)
if (len(data
) == 0):
print("close socket")
conn
.close
()
break
data
= data
.decode
('utf-8')
if flag
:
ret
= conn
.send
(data
)
if data
== 'quit\n':
print("stop")
flag
= False
if data
== "accept\n":
print("start")
flag
= True
print(data
)
except:
if (listenSocket
):
listenSocket
.close
()
wlan
.disconnect
()
wlan
.active
(False)
```
结果