01 ftp上传简单示例服务端

import jsonimport socketimport structserver = 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:\s18\jj + \\ + 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)

 

相关文章