首页 > 代码库 > Python分享之分分钟做个FTP
Python分享之分分钟做个FTP
Server:
import socket,os,hashlibserver=socket.socket()server.bind(("localhost",9999))#绑定要监听的端口server.listen()#开始监听while True: conn,addr=server.accept()#等待用户输入命令 print("newconn",addr) while True: print("等待新指令") data=conn.recv(1024) if not data: print("客户端断开") break cmd,filename=data.decode().split() print(filename) if os.path.isfile(filename): f = open(filename,"rb") m = hashlib.md5() file_size=os.stat(filename).st_size conn.send(str(file_size).encode())#send file size conn.recv(1024)#wait for ack for line in f: m.update(line) conn.send(line) print("file md5",m.hexdigest()) f.close() conn.send(m.hexdigest().encode())#send md5 print("send done")server.close()
client:
import socket,os,hashlibclient=socket.socket()client.connect(("localhost",9999))while True: cmd = input(">>:".strip()) if len(cmd) ==0:continue if cmd.startswith("get"): client.send(cmd.encode()) server_respose=client.recv(1024)#文件大小 print("server respose",server_respose) client.send(b"ready to recv file") file_total_size = int(server_respose.decode()) received_size=0 filename=cmd.split()[1] f = open(filename+".new","wb")#复制新文件 m = hashlib.md5() while received_size<file_total_size: if file_total_size - received_size > 1024:#接收不止一次 size=1024 else:#最后一次接收 size=file_total_size-received_size print("last receive",size) data=client.recv(size) received_size+=len(data) m.update(data) f.write(data) else: new_file_md5=m.hexdigest() print("file recv done",received_size,file_total_size) f.close() server_file_md5=client.recv(1024)#最后接收服务器返回的md5 print("server file md5",server_file_md5) print("client file md5",new_file_md5)client.close
Python分享之分分钟做个FTP
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。