#server 同時進行了md5加密 1 import socket 2 import hashlib 3 4 client = socket.socket() 5 client.connect(('localhost',9998)) 6 while True: 7 cmd = input("請輸入... ...
#server 同時進行了md5加密
1 import socket 2 import hashlib 3 4 client = socket.socket() 5 client.connect(('localhost',9998)) 6 while True: 7 cmd = input("請輸入:").strip() 8 if len(cmd)==0:continue 9 if cmd.startswith('get'): 10 client.send(cmd.encode()) 11 server_response = client.recv(1024) 12 print("server response:",server_response) 13 client.send(b'ready to recv file') 14 file_total_size = int(server_response.decode()) 15 received_size = 0 16 filename = cmd.split()[1] 17 f = open(filename+'new','wb') 18 m = hashlib.md5() 19 20 while received_size < file_total_size: 21 if file_total_size - received_size >1024:#收不止一次 22 size = 1024 23 else:#最後一次收了,剩多少收多少,不能多收 24 size = file_total_size - received_size 25 print('last receive:',size) 26 27 data = client.recv(size) 28 received_size += len(data) 29 m.update(data) 30 f.write(data) 31 else: 32 new_file_md5 = m.hexdigest() 33 print('file receive done ',received_size,file_total_size) 34 f.close() 35 server_file_md5 = client.recv(1024) 36 print('server file md5:',server_file_md5) 37 print('client file md5',new_file_md5) 38 39 client.close()
#client
1 import socket 2 client = socket.socket() 3 client.connect(('localhost',9999)) 4 while True: 5 cmd = input('請輸入:').strip() 6 if len(cmd)==0: continue 7 client.send(cmd.encode('utf-8')) 8 cmd_res_size = client.recv(1024)#接受命令的長度 9 print('命令結果長度為:',cmd_res_size) 10 received_size = 0 11 received_data = b'' 12 while received_size < int(cmd_res_size.decode()): 13 data = client.recv(1024) 14 received_size += len(data)#每次開始每次接收到的可能小於1024,所以必須len判斷 15 received_data += data 16 else: 17 print('cmd res receive done ...',received_size) 18 print(received_data.decode()) 19 client.close()