通过修改IO事件的属性,使其变为非阻塞状态。(让一些条件阻塞函数不在阻塞)
*非阻塞IO往往和循环判断一起使用
s.setblocking(False)
将套接字设置为非阻塞状态
from socket import * from time import sleep,ctime s = socket() s.bind(('127.0.0.1',8889)) s.listen(5) #将套接字设置为非阻塞 s.setblocking(False) while True: print("Waiting for connect...") try: c,addr = s.accept() except BlockingIOError: #报错就执行 sleep(2) print(ctime()) continue else: #没有异常就执行 print("Connect from",addr) data = c.recv(1024).decode() if not data: break c.send(ctime().encode()) c.close() s.close()