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算法学习之桶排序算法实例(分块排序)
Dec 18 Python
Mac 上切换Python多版本
Jun 17 Python
《Python学习手册》学习总结
Jan 17 Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 Python
python对文件目录的操作方法实例总结
Jun 24 Python
python实现简单井字棋游戏
Mar 04 Python
Django实现将views.py中的数据传递到前端html页面,并展示
Mar 16 Python
python安装dlib库报错问题及解决方法
Mar 16 Python
python创建文本文件的简单方法
Aug 30 Python
scrapy实践之翻页爬取的实现
Jan 05 Python
python本地文件服务器实例教程
May 02 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 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
PHP新手上路(三)
2006/10/09 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
微信小程序实现左滑删除效果
2020/11/18 Javascript
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
Linux下编译安装MySQL-Python教程
2015/02/02 Python
Python图算法实例分析
2016/08/13 Python
Python中动态检测编码chardet的使用教程
2017/07/06 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
python numpy 反转 reverse示例
2019/12/04 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
自学python用什么系统好
2020/06/23 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
如何唤起类中的一个方法
2013/11/29 面试题
银行开业庆典方案
2014/02/06 职场文书
教师一岗双责责任书
2014/04/16 职场文书
假面舞会策划方案
2014/05/29 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android