我正在使用“ 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 OK\n')
conn.send('Content-Type: text/html\n')
conn.sendall(html)
conn.close()
答案 0 :(得分:1)
如果没有选择线程,则可以始终使用select
模块。
使用select,您基本上将套接字分为3类:
您要从中读取数据的套接字(包括新连接)。
您要向其发送数据的套接字。
对于每次迭代,select都会按这些类别返回套接字列表,因此您知道如何处理每个套接字,而不是每次都等待新的连接。
您可以在此处查看示例: https://steelkiwi.com/blog/working-tcp-sockets/