亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

基于python3實現socket文件傳輸和校驗

2020-02-15 22:17:42
字體:
來源:轉載
供稿:網友

基于socket的文件傳輸并進行MD5值校驗,供大家參考,具體內容如下

文件傳輸分為兩個類,一個是服務端,一個是客戶端。

客戶端發起發送文件或接收文件的請求,服務端收到請求后接收或發送文件,最后進行MD5值的校驗

socket數據通過struct模塊打包

需要發送文件到服務端時,調用sendFile函數,struct包內包含文件信息、文件大小、文件MD5等信息,服務端接收到文件后進行MD5值校驗,校驗成功后則返回成功

需要從服務器下載文件時,調用recvFile函數,收到文件后進行MD5校驗

client類代碼如下

import socketimport struct,osimport subprocess dataFormat='8s32s100s100sl' class fileClient(): def __init__(self,addr):  self.addr = addr  self.action = ''  self.fileName = ''  self.md5sum = ''  self.clientfilePath = ''  self.serverfilePath = ''  self.size = 0  def struct_pack(self):  ret = struct.pack(dataFormat,self.action.encode(),self.md5sum.encode(),self.clientfilePath.encode(),       self.serverfilePath.encode(),self.size)  return ret  def struct_unpack(self,package):  self.action,self.md5sum,self.clientfilePath,self.serverfilePath,self.size = struct.unpack(dataFormat,package)  self.action = self.action.decode().strip('/x00')  self.md5sum = self.md5sum.decode().strip('/x00')  self.clientfilePath = self.clientfilePath.decode().strip('/x00')  self.serverfilePath = self.serverfilePath.decode().strip('/x00')  def sendFile(self,clientfile,serverfile):  if not os.path.exists(clientfile):   print('源文件/文件夾不存在')   return "No such file or directory"  self.action = 'upload'  (status, output) = subprocess.getstatusoutput("md5sum " + clientfile + " | awk '{printf $1}'")  if status == 0:   self.md5sum = output  else:   return "md5sum error:"+status  self.size = os.stat(clientfile).st_size  self.serverfilePath = serverfile  self.clientfilePath = clientfile  ret = self.struct_pack()  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  try:   s.connect(self.addr)   s.send(ret)   recv = s.recv(1024)   if recv.decode() == 'dirNotExist':    print("目標文件/文件夾不存在")    return "No such file or directory"   elif recv.decode() == 'ok':    fo = open(clientfile, 'rb')    while True:     filedata = fo.read(1024)     if not filedata:      break     s.send(filedata)    fo.close()    recv = s.recv(1024)    if recv.decode() == 'ok':     print("文件傳輸成功")     s.close()     return 0    else:     s.close()     return "md5sum error:md5sum is not correct!"  except Exception as e:   print(e)   return "error:"+str(e)  def recvFile(self,clientfile,serverfile):  if not os.path.isdir(clientfile):   filePath,fileName = os.path.split(clientfile)  else:   filePath = clientfile  if not os.path.exists(filePath):   print('本地目標文件/文件夾不存在')   return "No such file or directory"  self.action = 'download'  self.clientfilePath = clientfile  self.serverfilePath = serverfile  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  try:   s.connect(self.addr)   ret = self.struct_pack()   s.send(ret)   recv = s.recv(struct.calcsize(dataFormat))   self.struct_unpack(recv)   if self.action.startswith("ok"):    if os.path.isdir(clientfile):     fileName = (os.path.split(serverfile))[1]     clientfile = os.path.join(clientfile, fileName)    self.recvd_size = 0    file = open(clientfile, 'wb')    while not self.recvd_size == self.size:     if self.size - self.recvd_size > 1024:      rdata = s.recv(1024)      self.recvd_size += len(rdata)     else:      rdata = s.recv(self.size - self.recvd_size)      self.recvd_size = self.size     file.write(rdata)    file.close()    print('/n等待校驗...')    (status, output) = subprocess.getstatusoutput("md5sum " + clientfile + " | awk '{printf $1}'")    if output == self.md5sum:     print("文件傳輸成功")    else:     print("文件校驗不通過")     (status, output) = subprocess.getstatusoutput("rm " + clientfile)   elif self.action.startswith("nofile"):    print('遠程源文件/文件夾不存在')    return "No such file or directory"  except Exception as e:   print(e)   return "error:"+str(e)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久亚洲精品一区二区| 国产精品久久久久久久久免费看| 91欧美日韩一区| 欧美精品久久久久久久| 精品国产福利视频| 亚洲国产免费av| 国产精品久久久久久久久久久久| 亚洲少妇激情视频| 亚洲视频视频在线| 亚洲精品97久久| 97在线观看视频| 国产欧美一区二区白浆黑人| 日韩欧美在线字幕| 亚洲国产天堂网精品网站| 狠狠久久亚洲欧美专区| 日韩精品小视频| 欧美黄色三级网站| 综合136福利视频在线| 欧美视频二区36p| 欧美激情女人20p| 亚洲精品动漫100p| 国产精品久久综合av爱欲tv| 欧美一级在线亚洲天堂| 中文字幕在线观看日韩| 久久久久久久一区二区| 亚洲国产精品国自产拍av秋霞| 91九色视频导航| 久久99精品国产99久久6尤物| 亚洲国产精品福利| 日韩最新中文字幕电影免费看| 亚洲性xxxx| 国产精品视频一区国模私拍| 97在线看免费观看视频在线观看| 国产激情久久久久| 欧美激情视频在线免费观看 欧美视频免费一| 日本一区二区三区四区视频| 亚洲免费av电影| 亚洲第五色综合网| 97成人超碰免| 成人网在线观看| 动漫精品一区二区| 狠狠色狠狠色综合日日小说| 91亚洲精华国产精华| 奇门遁甲1982国语版免费观看高清| 777777777亚洲妇女| 日韩一区二区福利| 日韩精品在线观看一区| 亚洲一区二区三区毛片| 97热精品视频官网| 亚洲一区亚洲二区亚洲三区| 亚洲日本欧美日韩高观看| 久久精品成人动漫| 九九久久精品一区| 国产成人jvid在线播放| 精品高清一区二区三区| 欧美另类第一页| 国产美女搞久久| 亚洲激情久久久| 高清日韩电视剧大全免费播放在线观看| 国产精品一区二区久久久| 伊人伊成久久人综合网站| 亚洲精品午夜精品| 国产精品福利无圣光在线一区| 欧美激情在线观看视频| 尤物九九久久国产精品的分类| 欧美成人精品在线播放| 中文字幕在线日韩| 久久在精品线影院精品国产| 97视频在线播放| 久久视频在线观看免费| 久久精品国产欧美激情| 久久久精品电影| 欧美在线视频导航| 久久人体大胆视频| 国产在线观看精品| 北条麻妃99精品青青久久| 欧美亚州一区二区三区| 亚洲奶大毛多的老太婆| 狠狠色狠狠色综合日日五| 欧美亚洲午夜视频在线观看| 九九热在线精品视频| 成人欧美一区二区三区在线湿哒哒| 88xx成人精品| 亚洲精选一区二区| 992tv成人免费影院| 成人黄色免费网站在线观看| 日韩欧美在线第一页| 久久久久久91香蕉国产| 亚洲性视频网址| 日韩有码视频在线| 影音先锋欧美在线资源| 欧洲美女7788成人免费视频| 黑人巨大精品欧美一区二区三区| 国产精品成人一区二区| 欧美电影在线观看高清| 欧美精品videosex极品1| 深夜福利日韩在线看| 亚洲图片在线综合| 午夜欧美大片免费观看| 国产精品草莓在线免费观看| 综合欧美国产视频二区| 欧美一级视频免费在线观看| 亚洲国产婷婷香蕉久久久久久| 91久久夜色精品国产网站| 久久精品国产久精国产一老狼| 中文字幕最新精品| 麻豆精品精华液| 欧美天天综合色影久久精品| 亚洲www永久成人夜色| 91色琪琪电影亚洲精品久久| 欧美在线一区二区视频| 国产精品h在线观看| 国产欧美最新羞羞视频在线观看| 色妞欧美日韩在线| 日韩中文字幕视频在线| 国产97在线|日韩| 欧美亚洲午夜视频在线观看| 色综合久久天天综线观看| 国产精品白丝av嫩草影院| 国产精品99蜜臀久久不卡二区| 欧美成人免费播放| 国产在线精品成人一区二区三区| 一区二区成人av| 美女福利精品视频| 国产日韩欧美日韩| 日韩免费高清在线观看| 亚洲第一视频网站| 久久久电影免费观看完整版| 欧美一级电影在线| 国产一区二区黑人欧美xxxx| 日韩免费av片在线观看| 国产精品视频导航| 欧美夫妻性生活视频| 97国产一区二区精品久久呦| 亚洲男人第一网站| 欧洲成人免费视频| 日韩精品福利网站| 日韩av免费在线观看| 国产大片精品免费永久看nba| 最新国产精品亚洲| 久久久国产91| 美女av一区二区| 亚洲激情视频网| 美女视频久久黄| 亚洲激情自拍图| 欧美在线观看网站| 久久精品久久久久久| xxxxxxxxx欧美| 久久久精品国产| 羞羞色国产精品| 国产日本欧美视频| 亚洲综合精品一区二区| 日韩精品www| 欧美精品在线极品| 国产精品美乳在线观看| 国产亚洲激情视频在线| 一区二区三区日韩在线| 成人黄色免费在线观看| 色吧影院999| 欧美另类高清videos| 欧美亚洲另类制服自拍| 精品电影在线观看| 欧美精品久久久久久久久久| 蜜臀久久99精品久久久久久宅男|