You can use settimeout()
as in this example:
import socket
tcpServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpServer.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcpServer.settimeout(0.2) # timeout for listening
tcpServer.bind(('0.0.0.0', 10000)) # IP and PORT
tcpServer.listen(1)
stopped = False
while not stopped:
try:
(conn, (ip, port)) = tcpServer.accept()
except socket.timeout:
pass
except:
raise
else:
# work with the connection, create a thread etc.
...
The loop will run until stopped
is set to true and then exit after (at most) the timeout you have set. (In my application I pass the connection handle to a newly created thread and continue the loop in order to be able to accept further simultaneous connections.)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…