写一个下载功能的时候遇到的一个bug。
import socket import struct import json import os base_dir = os.getcwd() print(base_dir) client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(("127.0.0.1", 8889)) while True: msg = input(">>:") if not msg: continue client.send(msg.encode("utf-8")) heard_data = client.recv(4) heard_len = struct.unpack("i", heard_data)[0] heard_bytes = client.recv(heard_len) heard = json.loads(heard_bytes.decode("utf-8")) filename = heard["filename"] md5 = heard["md5"] filesize = heard["filesize"] data = b"" recv_size = 0 while filesize > 0: # 判断条件为什么不能使用while filesize > 0: msg = client.recv(1024) print(len(msg)) data += msg filesize -= 1024 # 这里的一个问题,为什么不能使用filesize -= 1024 with open("{}/test/downloads/{}".format(base_dir, filename), "wb") as f: f.write(data) print("下载成功") client.close()