真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

socket_ftp_上傳下載

#main.py
importsocketserver,json,os,hashlib
classMyTcpHandler(socketserver.BaseRequestHandler):
   defput(self,*args):
        cmd_dic=args[0]
        filename=cmd_dic["filename"]
        filesize=cmd_dic["size"]
       ifos.path.isfile(filename):
            f=open(filename+".new",'wb')
       else:
            f=open(filename,'wb')
       self.request.send(b'200 ok')
        received_size=0
       m=hashlib.md5()
       whilereceived_size            data=self.request.recv(1024)
            m.update(data)
            f.write(data)
            received_size+=len(data)
       else:
            uploaded_file_md5=m.hexdigest()
           self.request.send(b"ready recive your md5")
            client_file_md5=self.request.recv(1024)
            print("client_file_md5:",client_file_md5.decode())
           print("uploaded_file_md5:",uploaded_file_md5)
           print("file [%s] has uploaded..."%filename)
   defget(self,*args):
        cmd_dic=args[0]
        filename=cmd_dic["filename"]
       ifos.path.isfile(filename):
            f=open(filename,'rb')
            filesize=os.stat(filename).st_size
           self.request.send(str(filesize).encode())
           self.request.recv(1024)
            m = hashlib.md5()
           forlineinf:
                m.update(line)
               self.request.send(line)
           else:
               print("file md5:", m.hexdigest())
               self.request.recv(1024)
               self.request.send(m.hexdigest().encode("utf-8"))
               print("file download  success...")
                f.close()
       else:
           print(filename,"is not exist")
   defhandle(self):
       while True:
           try:
               self.data=self.request.recv(1024).strip()
                print("{} wrote:".format(self.client_address[0]))
               print(self.data.decode())
                cmd_dic=json.loads(self.data.decode())
               print("cmd_dic:",cmd_dic)
                action=cmd_dic["action"]
               ifhasattr(self,action):
                    func=(getattr(self,action))
                    func(cmd_dic)
           exceptConnectionResetError ase:
               print("error",e)
               break
if
__name__=="__main__":
    HOST,PORT="localhost",5566
   server=socketserver.ThreadingTCPServer((HOST,PORT),MyTcpHandler)
    server.serve_forever()
    server.allow_reuse_address()

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供烏海海南網(wǎng)站建設(shè)、烏海海南做網(wǎng)站、烏海海南網(wǎng)站設(shè)計(jì)、烏海海南網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、烏海海南企業(yè)網(wǎng)站模板建站服務(wù),10年烏海海南做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

#client.py
importsocket,os,json,hashlib
classFtpclient(object):
   def__init__(self):
        self.client=socket.socket()
   defhelp(self):
       print("put/get/cd/pwd")
   defconnect(self,ip,port):
        self.client.connect((ip,port))
   definteractive(self):
       while True:
            cmd=input("請輸入要上傳下載的文件:").strip()
           iflen(cmd)==0:continue
           
cmd_str=cmd.split()[0]
           ifhasattr(self,cmd_str):
                func=getattr(self,cmd_str)
                func(cmd)
           else:
                self.help()
   defput(self,*args):
        cmd_split=args[0].split()
       iflen(cmd_split)>1:
            filename=cmd_split[1]
           ifos.path.isfile(filename):
                filesize=os.stat(filename).st_size
                msg_dic={
                   "action":"put",
                   "filename":filename,
                   "size":filesize,
                   "overridden":True
               
}
                self.client.send(json.dumps(msg_dic).encode("utf-8"))
               server_response=self.client.recv(1024)
                m=hashlib.md5()
                f=open(filename,'rb')
               forlineinf:
                    m.update(line)
                    self.client.send(line)
               else:
                   print("file md5:", m.hexdigest())
                    self.client.recv(1024)
                    self.client.send(m.hexdigest().encode("utf-8"))
                   print("file upload success...")
                    f.close()
           else:
               print(filename,"is not exist")
   defget(self,*args):
        cmd_split=args[0].split()
       iflen(cmd_split)>1:
            filename=cmd_split[1]
            msg_dic={
                   "action":"get",
                   "filename":filename,
                   "overridden":True
           
}
            self.client.send(json.dumps(msg_dic).encode("utf-8"))
            received_size =0
           m = hashlib.md5()
            f=open(filename+".download",'wb')
            server_response=self.client.recv(1024)
            file_total_size=int(server_response.decode())
            self.client.send(b"ready to recv file")
           whilereceived_size < file_total_size:
               iffile_total_size - received_size >1024:
                    size=1024
               else:
                    size=file_total_size - received_size
                data = self.client.recv(size)
                m.update(data)
                f.write(data)
                received_size +=len(data)
           else:
                download_file_md5 = m.hexdigest()
                self.client.send(b"ready recive your md5")
                servrer_file_md5 = self.client.recv(1024)
               print("server_file_md5:",servrer_file_md5.decode())
               print("download_file_md5:",download_file_md5)
                print("file [%s] has download..."%filename)
               print("源文件和下載文件大小分別為:",received_size,file_total_size)
ftp=Ftpclient()
ftp.connect("localhost",5566)
ftp.interactive()

新聞名稱:socket_ftp_上傳下載
網(wǎng)頁鏈接:http://weahome.cn/article/jpdsds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部