写一个下载功能的时候遇到的一个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()
client

相关文章: