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()
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()