服务器端:
,# _ * _coding: utf-8_ * _
,
进口SocketServer
进口操作系统
导入命令
类MyTCPHandler (SocketServer.BaseRequestHandler):
,,def处理(自我):
,,,,,,而真正的:
,,,,,,,,,,指令=self.request.recv (1024) .strip() #接收客户端命令
,,,,,,,,,,如果不是指令:休息
,,,,,,,,,,指令=instruction.split (& # 39; | & # 39;)
,,,,,,,,,,如果hasattr(自我,指令[0]):
,,,,,,,,,,,,,,func=getattr(自我,指令[0])
,,,,,,,,,,,,,,func(指令)
,,def FileTransfer(自我,味精):
,,,,,,打印& # 39;——filetransfer——& # 39;味精
,,,,,,如果味精[1]==& # 39;得到# 39;:
,,,,,,,,,,打印“客户想下载文件:“味精[2]
,,,,,,,,,,如果os.path.isfile(味精[2]):
,,,,,,,,,,,,,,file_size=os.path.getsize(味精[2])
,,,,,,,,,,,,,,res=白急负脇 % s"% file_size
,,,,,,,,,,其他:
,,,,,,,,,,,,,,res=拔募? 39;t exist"
,,,,,,,,,,打印& # 39;res=====& # 39;, res
,,,,,,,,,,自我。send_confirmation=癋ileTransfer | | % s"% res
,,,,,,,,,,self.request.send (self.send_confirmation)
,,,,,,,,,,反?self.request.recv (100)
,,,,,,,,,,如果反?=& # 39;FileTransfer | |得到recv_ready& # 39;:
,,,,,,,,,,,,,,f=文件(味精[2],& # 39;rb # 39;)
,,,,,,,,,,,,,,send_size=0
,,,,,,,,,,,,,,虽然不是file_size==send_size:
,,,,,,,,,,,,,,,,,,如果file_size——send_size祝辞1024:
,,,,,,,,,,,,,,,,,,,,,,data=https://www.yisu.com/zixun/f.read (1024)
,,,,,,,,,,,,,,,,,,,,,,send_size +=1024
,,,,,,,,,,,,,,,,,,其他:
,,,,,,,,,,,,,,,,,,,,,data=https://www.yisu.com/zixun/f.read (file_size - send_size)
,,,,,,,,,,,,,,,,,,,,,send_size +=(file_size - send_size)
,,,,,,,,,,,,,,,,,,self.request.send(数据)
,,,,,,,,,,,,,,,,,,打印file_size, send_size
,,,,,,,,,,elif味精[1]==& # 39;把# 39;:
,,,,,,,,,,,,,,通过
,,def ls(自我,味精):
,,,,,,打印味精
,,,,,,cmd_result=commands.getstatusoutput(味精[0])
,,,,,,self.request.sendall (cmd_result [1])
if __name__==& # 39; __main__ # 39;:
,,主机、端口=啊?9002年
,,服务器=SocketServer.ThreadingTCPServer((主机、端口),MyTCPHandler)
,,server.serve_forever ()
客户端:
# _ * _coding: utf-8_ * _
进口套接字
进口操作系统
类FtpClient(对象):
,,def __init__(自我、主机端口):
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null