python3利用tcp实现文件夹远程传输


Posted in Python onJuly 28, 2018

本文实例为大家分享了python实现文件夹远程传输的具体代码,供大家参考,具体内容如下

实现功能:

通过tcp协议模拟文件夹的下载,注意是文件夹,不是文件。

下面让我们实现以下:

其中有部分功能还未实现有兴趣的可以将代码自行补全

服务器端代码:

import os
import socket
import time
# 定义全局列表用来存储子文件夹
list1 = []


def deal_file(files,dir_name,dir_socket):
  # 如果打开文件时报错即files为文件夹
  try:
    old_file = open(os.path.join(dir_name.decode(),files),"rb")
  except:
    # 讲导致报错的文件夹放入全局列表等待处理
    global list1
    list1.append(files)
  else:
    # 没有报错则执行读取发送关闭文件
    file_data = old_file.read()
    print("发送内容")
    dir_socket.send(file_data)

    old_file.close()

def deal_dir():
  # 待完善用于处理子文件夹,需要利用递归完成
  pass


def main():
  # 创建套接字
  tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  # 固定端口号
  tcp_socket.bind(("",9992))
  # 被动套接字转换为主动套接字
  tcp_socket.listen(128)
  # 将队列中的客户端取出
  dir_socket,client_ip = tcp_socket.accept()
  # 接受客户端消息
  dir_name = dir_socket.recv(1024)
  # 显示文件列表
  file_list = os.listdir(dir_name.decode())
  # 将文件列表发送至客户端
  dir_socket.send(str(file_list).encode())
  # 阻塞0.5s等待发送成功
  time.sleep(0.5)
  # 便利每个文件发送文件内容
  for files in file_list:
    deal_file(files, dir_name, dir_socket)
  global list1
  # 如果全局列表内有文件则
  if list1:
    # 带完善
    pass

  else:


    dir_socket.close()

    print("文件全部传输完成")
    tcp_socket.close()



if __name__ == '__main__':
  main()

客户端源码:

import socket
import os
import threading
import time


def recv_data(files,dir_name,tcp_socket):
  file_data = tcp_socket.recv(1024)
  new_file = open(os.path.join(dir_name+"新", files),"wb")

  new_file.write(file_data)
  new_file.close()
  print("文件%s下载完成" % files)
def main():
  # 创建套接字
  tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  # 连接服务器
  tcp_socket.connect(("192.168.11.128", 9992))

  # 向服务器发送要拷贝的文件夹
  dir_name = input("请输入要拷贝的文件夹")
  tcp_socket.send(dir_name.encode())
  # 新建文件夹
  os.mkdir(dir_name+"新")
  # 接受文件列表,循环打开文件写入
  file_list = tcp_socket.recv(1024)
  a = eval(file_list)
  print(a)
  for files in eval(file_list.decode()):
    recv_data(files,dir_name,tcp_socket)


if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
介绍Python中几个常用的类方法
Apr 08 Python
Python基于pygame模块播放MP3的方法示例
Sep 30 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
django模板加载静态文件的方法步骤
Mar 01 Python
Python如何实现转换URL详解
Jul 02 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
Python绘图实现台风路径可视化代码实例
Oct 23 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 Python
Python实现一个论文下载器的过程
Jan 18 Python
Matlab如何实现矩阵复制扩充
Jun 02 Python
Python初学者必备的文件读写指南
Jun 23 Python
python使用tornado实现简单爬虫
Jul 28 #Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 #Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 #Python
Python Socket编程之多线程聊天室
Jul 28 #Python
python实现点对点聊天程序
Jul 28 #Python
基于python实现聊天室程序
Jul 27 #Python
Python中return self的用法详解
Jul 27 #Python
You might like
虫族 Zerg 热键控制
2020/03/14 星际争霸
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
JQuery select标签操作代码段
2010/05/16 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
js遍历、动态的添加数据的小例子
2013/06/22 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
Python实现的简单万年历例子分享
2014/04/25 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
微信公众号token验证失败解决方案
2019/07/22 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
员工自我鉴定范文
2013/10/06 职场文书
会计电算化专业个人的自我评价
2013/11/24 职场文书
物流仓管员工作职责
2014/01/06 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
活动总结报告范文
2014/05/04 职场文书
项目安全员岗位职责
2015/02/15 职场文书
远程教育培训心得体会
2016/01/09 职场文书