【发布时间】:2020-03-30 09:59:36
【问题描述】:
如何在 python3 中刷新套接字?
我想做这样的事情
def clear_buffer(sock):
try:
while sock.recv(1024): pass
except:
pass
或
def clear_buffer(sock):
while True:
data = sock.recv(1024)
if not data:
break
在尝试运行这两个函数后,似乎都没有打破 while 循环和/或从传入数据中清除套接字。当套接字停止接收数据时,我如何有条件地做某事?
【问题讨论】:
-
也许你应该在等待数据太久或停止等待数据时使用超时来引发错误 - settimeout。或者你应该使用模块select检查是否有数据,然后再使用
read() -
我通过发送一个包含字符的标志来解决这个问题,以便在套接字完成发送数据时中断 while 循环。不过,我宁愿不这样做,这样我就不必在流式传输数据等时设置标志。
标签: python python-3.x sockets networking