У меня есть TCP-сервер, который ожидает подключения внутри бесконечного цикла while.Проблема, я думаю, как только он встречает метод accept (), он переходит в спящий режим, пока не будет установлено соединение для принятия.Я хочу вырваться из цикла с помощью прерывания клавиатуры, но, думаю, поскольку функция ожидает соединения, она просто игнорирует прерывание ..
def start_main_server(self):
print("The Server is ready to recieve")
socket_threads = list()
count = 0
while 1:
try:
connectionSocket, addr = self.serversocket.accept()
print("accepted")
connectionSocket.send(json.dumps(self.users).encode())
socket_threads.append(Thread(target=self.login,args=(connectionSocket,)))
socket_threads[count].start()
count += 1
except KeyboardInterrupt:
break
Исполняемый код:
# coding=utf-8
from socket import *
port = 12000
servername = "127.0.0.1"
connection =socket(AF_INET,SOCK_STREAM)
connection.bind((servername,port))
connection.listen(1)
print("SERVER STARTED")
while 1:
try:
x = connection.accept()
except KeyboardInterrupt:
print("Keyboard Interrupt Occured")
break
print("I am out of loop")