希望在一个时间范围内接受尽可能多的客户

时间:2019-01-07 02:46:09

标签: python sockets timeout socket-timeout-exception

我正在编写一个程序,该程序允许wifi网络中的计算机连接到它,在一段时间后,它应该不再接受连接并准备向所有连接的客户端发送消息

我尝试了while循环,但是找不到时间限制方法

这是我当前的代码:     导入套接字

connections = []
s = socket.socket()
host = socket.gethostname()
port = 8080
s.bind((host, port))
s.listen(1)
print(".....")
while True:
    conn, addr = s.accept()
    connections.append([conn, addr])
    connections[-1][0].send("welcome".encode())

#after a certain amount of time I want that loop to stop and wait for a 
command to be typed or some other input method

1 个答案:

答案 0 :(得分:1)

您可以根据时间条件放置while循环,也可以检查循环中的时间,如果超过时间则检查break

while基于时间条件的循环:

import datetime as dt

start = dt.datetime.utcnow()
while dt.datetime.utcnow() - start <= dt.timedelta(seconds=600):  # 600 secs = 10 mins
    # your code

while循环中,带有break

start = dt.datetime.utcnow()
while True:
    if dt.datetime.utcnow() - start > dt.timedelta(seconds=600):
        break  # end the loop after 10 mins
    # your code