Вы можете использовать settimeout()
, как в этом примере:
import socket
tcpServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpServer.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcpServer.bind(('0.0.0.0', 10000)) # IP and PORT
stopped = False
while not stopped:
try:
tcpServer.settimeout(0.2) # timeout for listening
tcpServer.listen(1)
(conn, (ip, port)) = tcpServer.accept()
except socket.timeout:
pass
except:
raise
else:
# work with the connection, create a thread etc.
...
Цикл будет работать до тех пор, пока для stopped
не будет установлено значение true, а затем завершится через (самое большее) установленное вами время ожидания.(В моем приложении я передаю дескриптор соединения во вновь созданный поток и продолжаю цикл, чтобы иметь возможность принимать дальнейшие одновременные соединения.)