1.使用socket实现文件上传
server.py
#!/usr/bin/env python # _*_ coding:UTF-8 _*_ import os import SocketServer class MyServer(SocketServer.BaseRequestHandler): def handle(self): base_path = "/Users/liudaoqiang/" conn = self.request print "connected" while True: pre_data = conn.recv(1024) cmd, file_name, file_size = pre_data.split("|") recv_size = 0 file_dir = os.path.join(base_path, file_name) f = file(file_dir, "wb") Flag = True while Flag: if int(file_size) > recv_size: data = conn.recv(1024) recv_size += len(data) else: recv_size = 0 Flag = False f.write(data) print "upload success" f.close() instance = SocketServer.ThreadingTCPServer(("127.0.0.1", 9999), MyServer) instance.serve_forever()
client.py
# !/usr/bin/env python # _*_ coding:UTF-8 _*_ import socket import os if __name__ == "__main__": client = socket.socket() ip_port = ("127.0.0.1", 9999) client.connect(ip_port) while True: input = raw_input(">>>>") cmd, path = input.split("|") file_name = os.path.basename(path) file_size = os.stat(path).st_size client.send(cmd + "|" + file_name + "|" + str(file_size)) send_size = 0 f = file(path, "rb") Flag = True while Flag: if send_size + 1024 > file_size: data = f.read((file_size - send_size)) Flag = False else: data = f.read(1024) send_size += 1024 f.close() client.close()