将原本阻塞的函数设置一个最长阻塞时间。如果时间内条件达成则正常运行,如果仍然阻塞则视为超时,继续向下运行或产生异常
s.settimeout(sec)
设置套接字的超时时间
from socket import * from time import sleep,ctime s = socket() s.bind(('127.0.0.1',8889)) s.listen(5) #将套接字设置为超时时间 s.settimeout(5) while True: print("Waiting for connect...") try: c,addr = s.accept() except timeout: #报错就执行 print(ctime()) continue else: #没有异常就执行 print("Connect from",addr) while True: data = (c.recv(1024)).decode() print(data) if data == "*": break c.send(ctime().encode()) c.close() s.close()