如何使用带有TCP客户端/服务器逻辑的套接字编程来跟踪文件下载的进度,以继续代码流而无需无限while循环?
如果可以手动解析标头,则可以获取文件大小,在content-length
字段中,总迭代次数将content_length/recv_buffer_size。例如,如果您一次接收 1024 个字节,文件大小为 4096,则迭代次数 = 4096/1024 = 4。
total_length = content_length / buffer_size
progressbar.set_length(total_length) #some imaginary library
for i in range(total_length):
data = socket.recv(buffer_size)
if data :
file.write(data)
progressbar.update(1) #some imaginary progress-bar library
file.close()