如何使用键盘中断Python中的recvfrom()调用?

如何使用键盘中断Python中的recvfrom()调用?,python,sockets,python-2.7,udp,Python,Sockets,Python 2.7,Udp,我在程序的main()函数中运行了一个循环,如下所示 while True: data, addr = sock.recvfrom(MAX_MESS_LEN) thread.start_new_thread(message_handler, (data, addr,)) 我想介绍的功能,使我也许可以点击'q'打破循环和结束程序。我不知道该怎么做,因为程序会等待recvfrom()调用,直到收到消息。有没有办法实现中断键或键盘事件捕捉器之类的东西?现在我使用ctrl-c键盘中断程

我在程序的main()函数中运行了一个循环,如下所示

while True:
    data, addr = sock.recvfrom(MAX_MESS_LEN)
    thread.start_new_thread(message_handler, (data, addr,))

我想介绍的功能,使我也许可以点击'q'打破循环和结束程序。我不知道该怎么做,因为程序会等待recvfrom()调用,直到收到消息。有没有办法实现中断键或键盘事件捕捉器之类的东西?现在我使用ctrl-c键盘中断程序,但这似乎有点草率。

在您尝试从套接字接收数据之前,您可以尝试检查套接字中是否有任何数据

dataInSocket, _, _ = socket.select.select([sock], [], [])
if dataInSocket:
    data, addr = sock.recvfrom(MAX_MESS_LEN)
    thread.start_new_thread(message_handler, (data, addr,))
我在这里有点猜测了你的代码,所以这段代码可能不会完全复制并粘贴到你的代码中。你需要让它为你自己的程序工作