我正在使用"conn, addr = httpSocket.accept(("行,但我不想在我的循环的每次迭代中等待它,因为并不总是有人试图连接。有没有办法检查是否有人正在尝试连接,如果没有,请继续前进?
我已经考虑过使用 asyncio(我不能使用线程,因为这是 esp8266 上的 micropython,不支持线程(,但我的行无法等待。
with open('page.html', 'r') as file:
html = file.read()
while True:
conn, addr = httpSocket.accept()
print('Got a connection from %s' % str(addr))
conn.send('HTTP/1.1 200 OKn')
conn.send('Content-Type: text/htmln')
conn.sendall(html)
conn.close()
如果线程不是一个选项,您可以随时使用 select
模块。使用 select,您基本上将套接字分为 3 类:
-
要从中读取数据的套接字(包括新连接(。
-
要向其发送数据的套接字。
- 特殊的套接字(通常用于错误检查(。
每次迭代时,选择都会按这些类别返回套接字列表,因此您知道如何处理每个套接字,而不是每次都等待新连接。
您可以在此处查看示例:https://steelkiwi.com/blog/working-tcp-sockets/