一、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较验.