我在程序的main()函数中运行了一个循环,如下所示
while True:
data, addr = sock.recvfrom(MAX_MESS_LEN)
thread.start_new_thread(message_handler, (data, addr,))
我想介绍一些功能,让我可以点击'q'来打破循环并结束程序。我不知道如何执行此操作,因为程序在收到消息之前等待recvfrom()调用。有没有办法实现中断键或键盘事件捕捉器?现在我使用ctrl-c键盘中断程序,但这看起来有点草率。
答案 0 :(得分:0)
您可以先尝试检查套接字中是否有数据,然后再尝试从中接收数据?
dataInSocket, _, _ = socket.select.select([sock], [], [])
if dataInSocket:
data, addr = sock.recvfrom(MAX_MESS_LEN)
thread.start_new_thread(message_handler, (data, addr,))
我在这里稍微猜到了你的代码,所以这段代码可能不会干净地复制并粘贴到你的代码中。你需要让它适合你自己的程序。