一、md5验证
import hashlib
m=hashlib.md5()
m.update(b"test")
print (m.hexdigest())
结果:098f6bcd4621d373cade4e832627b4f6
二、客户端代码
#客户端
import socket
client=socket.socket() #生成socket连接对象
client.connect(("localhost",6969))
while True:
msg=input(">>>:")
if not msg:
continue
if msg.startswith("get"):
client.send(msg.encode("utf-8")) #发送命令到服务端 ;
cmd_res_size=client.recv(1024) #接收文件的大小;
print ("文件大小为:",cmd_res_size)
client.send(b"ready to recv file..")
cmd_size=0
cmd_data=b''
filename=msg.split()[1]
f=open(filename+".new","wb")
while cmd_size!=int(cmd_res_size.decode()):
data=client.recv(1024)
cmd_size+=len(data)
f.write(data)
else:
print ("cmd received done !",cmd_size)
print (cmd_data.decode())
f.close()
client.close()
三、服务端
#服务端
import socket,os
so_server=socket.socket()
so_server.bind(("localhost",6969))
so_server.listen()
print ("等电话!")
while True: #实现多个链路连接;
conn,addr=so_server.accept()
print ("new connect",addr)
while True:
print ("等待新指令!")
data = conn.recv(1024)
if not data:
print("客户端已经断开")
break
cmd,filename=data.decode().split()
if os.path.isfile(filename):
f=open(filename,"rb")
file_size=str(os.stat(filename).st_size)
print (file_size.encode())
conn.send(file_size.encode())
conn.recv(1024) #wait for ack;
for line in f:
conn.send(line)
f.close()
so_server.close()
8.文件md5较验.