我的程序的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,))
我在这里有点猜测您的代码,因此该代码可能不会干净地复制并粘贴到您的代码中。您需要使它适用于您自己的程序。
关于python - 如何使用键盘中断Python中的recvfrom()调用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27177870/