Как прервать бесконечный цикл в ожидании приема TCP-соединения с клавиатурным прерыванием в python - PullRequest
0 голосов
/ 13 мая 2018

У меня есть 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")

...