import json import socket import struct server = socket.socket() server.bind(('127.0.0.1',8001)) server.listen() conn,addr = server.accept() #首先接收文件的描述信息的长度 struct_data_len = conn.recv(4) data_len = struct.unpack('i',struct_data_len)[0] # 通过文件信息的长度将文件的描述信息全部接收 print('data_len>>>',data_len) file_info_bytes = conn.recv(data_len) #将文件描述信息转换为字典类型,以便操作 file_info_json = file_info_bytes.decode('utf-8') file_info_dict = json.loads(file_info_json) #{'file_name': 'aaa.mp4', 'file_size': 24409470} print(file_info_dict) #统计每次接收的累计长度 recv_sum = 0 #根据文件描述信息,指定文件路径和文件名称 file_path = 'D:s18jj' + '\' + file_info_dict['file_name'] #接收文件的真实数据 with open(file_path,'wb') as f: #循环接收,循环结束的依据是文件描述信息中文件的大小,也是通过一个初始值为0的变量来统计 while recv_sum < file_info_dict['file_size']: every_recv_data = conn.recv(1024) recv_sum += len(every_recv_data) f.write(every_recv_data)