断点续传项目

while True:
发出ls请求连接
client.send('ls'.encode('utf8'))
file_list = client.recv(1024)

print('请选择文件下载:')
# 解压缩出列表
file_list = eval(file_list.decode('utf8'))
for ind,val in enumerate(file_list):
print(ind,val)

file_choice = input('请选择你要的东西:')
filename = file_list[int(file_choice)]


# 断点续传:查看客户内已有的文档大小和指针位置
file_path = os.path.join(settings.CLIENT_PATH,filename)
if os.path.exists(file_path):
file_size = os.path.getsize(file_path)
client.send(str((filename,file_size)).encode('utf8'))

else:
client.send(str((filename,0)).encode('utf8'))

# 飞机头
file_head = client.recv(4)
file_head = struct.unpack('i',file_head)[0]
print(file_head)
#版本1:下载
recv_size = 0
while recv_size <= file_head:
file_content = client.recv(102400)
recv_size += 10240
print('recv_size', recv_size)
save_file_content(filename, file_content)

# 版本2:下载
# recv_size = 0
# while recv_size < file_head:
# if file_head - recv_size > 10240:
# file_content = client.recv(10240)
# save_file_content(filename, file_content)
# recv_size += 10240
# else:
# file_content = client.recv(file_head - recv_size)
# save_file_content(filename, file_content)
#
# break

上一篇:cbc位反转攻击


下一篇:多线程的UDP聊天器