Я разрабатываю небольшую серверную систему, и мне нужно выключать сервер всякий раз, когда я набираю «exit ()» в консоли (ввод обрабатывается из другого потока). Мне было интересно, есть ли способ завершитьОсновной поток, пока сокет ожидает данных.Я уже пытался использовать _thread.interrupt_main () с исключением из клавиатурыInterrupt в блоке try, но это не сработало.Я также попытался os._exit (), который работал, но он не очищается, поэтому я решил не использовать его.Мой код:
import socket
import _thread
import os
clear = lambda: os.system("cls")
try:
Server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
Server.bind(("localhost",port))
Server.listen(2)
clear()
print("--------------------------------------")
print("Server running on port %s" % str(port))
print("--------------------------------------")
except Exception:
print("error while starting server")
input()
exit()
def control():
while True:
command = input()
if command == "exit()":
#interrupt code here
_thread.start_new_thread(control,())
while True:
con,ip = Server.accept()
print(str(ip) + " Connected")
try:
cmd = str(con.recv(1024).decode()) #<-- interrupt this line
except Exception:
print("Error")