#ftp_serverimport socketimport structimport jsonimport osimport hashlibserver=socket.socket()server.bind(('192.168.15.50',8000))server.listen(5)while 1: print('sever is working.......') conn,addr=server.accept() while 1: file_info_length_pack=conn.recv(4) file_info_length=struct.unpack('i',file_info_length_pack)[0] file_info_json=conn.recv(file_info_length).decode('utf-8') file_info=json.loads(file_info_json) action=file_info.get('action') file_name=file_info.get('file_name') file_size=file_info.get('file_size') md5=hashlib.md5() with open('put/'+file_name,mode='wb')as f: recv_data_length=0 while recv_data_length
#ftp_clientimport socketimport structimport osimport jsonimport hashlibclient=socket.socket()client.connect(('192.168.15.50',8000))while 1: cmd=input("请输入命令").strip() action,file_name=cmd.split(' ') file_size=os.path.getsize(file_name) file_info={ 'action':action, 'file_name':file_name, 'file_size':file_size } file_info_json=json.dumps(file_info).encode('utf-8') ret=struct.pack('i',len(file_info_json)) client.send(ret) client.send(file_info_json) md5=hashlib.md5() with open(file_name,mode='rb')as f: for line in f: client.send(line) md5.update(line) response1=client.recv(1024).decode('utf-8') if response1=='OK': print('上传完成') client.send(md5.hexdigest().encode('utf-8')) response2=client.recv(1024).decode('utf-8') if response2=='OK': print('经对比文件传输无误') break else: print('传输过程中,文件改变,请重新传输')client.close()