FTP客户端:这块应该是在数据库里面存储:用户名,密码 这里测试就暂时用一个字典:jesn@jesn-virtual-machine:~$ cat socket_Client.pyimport socket, timeHOST = 'localhost'PORT = 9999s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((HOST, PORT))dirc = {'jesn':110, 'mary':120}def check_user(): while 1: user = raw_input('please enter your user').strip() if user in dirc.keys(): count = 0 while 1: if count <3: passwd = int(raw_input('please enter your passwd').strip()) if passwd == dirc[user]: print 'welcome in my ftp!' break else: print 'error passwd!!! please enter again!' count = count +1 continue else: print 'username not in the list!!!' continue breakcheck_user()while 1: Input = raw_input('Please input the command :').strip() if len(Input) == 0: continue s.sendall(Input) user_input = Input.split() if user_input[0] == 'get': with open(user_input[1],'wr') as f: f.write(s.recv(1024)) print 'getting ...' if s.recv(1024) == 'ftpisdown':continue if not s.recv(1024):break if user_input[0] == 'set': with open(user_input[1],'rb') as f: y = f.read() s.sendall(y) print 'senting...' if s.recv(1024) == 'receiveDown':continue if not s.recv(1024):break data = s.recv(8192) time.sleep(2) #print 'Received', repr(data) print datas.close()jesn@jesn-virtual-machine:~$FTP 服务器端:jesn@jesn-virtual-machine:~/ftp$ cat ../thread_socket_server.pyimport SocketServer,commands,timeclass MyTCPHandler(SocketServer.BaseRequestHandler): def handle(self): while 1: self.data = self.request.recv(1024).strip() print "{} wrote:".format(self.client_address[0]) if not self.data: print "client %s is dead!"%self.client_address[0] break user_input = self.data.split() print user_input[0] if user_input[0] == 'get': with open(user_input[1],'rb') as f: y = f.read() self.request.sendall(y) time.sleep(2) self.request.sendall('ftpisdown') continue if user_input[0] == 'set': with open(user_input[1],'wb') as f: y = self.request.recv(1024) f.write(y) print 'writeing...' self.request.sendall('receiveDown') continue comman_statu,comman_test = commands.getstatusoutput(self.data) if len(comman_test) != 0: self.request.sendall(comman_test) print comman_test else: self.request.sendall('Done')if __name__ == "__main__": HOST, PORT = "localhost",9999 server = SocketServer.ThreadingTCPServer((HOST,PORT), MyTCPHandler) server.serve_forever()jesn@jesn-virtual-machine:~/ftp$