首页 > 解决方案 > 如何在python中打破等待接受带有键盘中断的TCP连接的无限循环

问题描述

我有一个 TCP 服务器,它正在无限循环中等待连接。问题是我猜一旦它遇到 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

可执行代码:

    # 编码=utf-8
    从套接字导入 *
    端口 = 12000
    服务器名 = “127.0.0.1”
    连接 =socket(AF_INET,SOCK_STREAM)
    connection.bind((服务器名,端口))
    连接.听(1)
    print("服务器已启动")
    而1:
        尝试:
            x = 连接.accept()
        除了键盘中断:
            print("发生键盘中断")
            休息
    print("我不在循环中")

标签: tcpkeyboardinterrupt

解决方案


推荐阅读