利用socket实现文件传送,大约分为如下几步:
1.读取文件名
2.检测文件是否存在
3.打开文件(别忘了最后关闭文件)
4.检测文件大小
5.发送文件大小给客户端
6.等客户端确认
7.开始边读边发数据
8.md5验证
实例1:实现步骤1-7
运行代码
#Author:Zheng Na #ftp服务端 import socket import os server = socket.socket() server.bind(('localhost',6969)) server.listen() while True: print("等待新客户端连接") conn,addr = server.accept() print("new conn: ",addr) while True: print("等待新指令") data = conn.recv(1024) if not data: print("客户端已断开") break cmd,filename = data.decode().split() # 1.读取文件名 print("文件名:",filename) if os.path.isfile(filename): # 2.判断文件是否存在 f = open(filename,'rb') # 3.打开文件 file_size = os.stat(filename).st_size # 4.检测文件大小 conn.send(str(file_size).encode()) # 5.发送文件大小给客户端 print("等待客户ack应答...") client_final_ack = conn.recv(1024) # 6.等待客户端确认 print("客户应答:", client_final_ack.decode("UTF-8")) for line in f: # 7.开始边读边发数据 conn.send(line) f.close() # 关闭文件 print("send done") server.close()