首页 > 解决方案 > 当socket.recv没有数据时Python inifite循环

问题描述

我有一个普通的普通套接字,可以发送和接收数据。当存在高延迟并且需要一段时间才能获取数据时,就会出现问题。例如,我将拥有:

s.recv(1024)

但到它执行时,只有 700 个字节可用。所以我必须再做一次才能得到剩下的。但关键是:有时它会更快,而第二个s.recv(1024)会在没有数据到来时等待数据。在那种情况下,它会陷入一个很长很长的循环中,我什至无法使用 Ctrl+C 中断。问题是,我怎样才能防止这个循环?如果没有可用数据,有没有办法引发异常?

标签: pythonsockets

解决方案


推荐阅读