ftp_socket
ftp_socket_client
import socket,os,hashlib client = socket.socket() client.connect(("192.168.171.129",9999)) while True: cmd = input(">>:").strip() if len(cmd) == 0:continue if cmd.startswith("get"): client.send(cmd.encode()) server_response = client.recv(1024) print("server response:",server_response) client.send(b"ready to recv file") file_total_size = int(server_response.decode()) recived_size= 0 filename = cmd.split()[1] f = open(filename + "new","wb") m = hashlib.md5() while recived_size < file_total_size: if file_total_size - recived_size > 1024: size = 1024 else: size = file_total_size - recived_size print("lsat size:",size) data = client.recv(size) recived_size += len(data) m.update(data) f.write(data) else: new_file_md5 = m.hexdigest() print("file recv done",recived_size,file_total_size) f.close() server_file_md5 = client.recv(1024) print("server file md5:",server_file_md5) print("client file md5:",new_file_md5) client.close()
ftp_socket_server
import socket,os,hashlib server = socket.socket() server.bind(("0.0.0.0",9999)) server.listen(5) while True: print("start waiting for calling...") conn,addr = server.accept() print("conn:",addr) while True: print("waiting for new calling...") 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()) conn.recv(1024) for line in f: m.update(line) conn.send(line) print("file md5",m.hexdigest()) conn.send(m.hexdigest().encode()) f.close() print("send done") server.close()