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

 更新时间:2018年07月28日 09:51:03   作者:WangF0  
这篇文章主要为大家详细介绍了python3利用tcp实现文件夹远程传输,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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()

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

相关文章

  • python3.9.1环境安装的方法(图文)

    python3.9.1环境安装的方法(图文)

    这篇文章主要介绍了python3.9.1环境安装的方法(图文),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • python中列表和元组的用法以及区别超详细讲解

    python中列表和元组的用法以及区别超详细讲解

    这篇文章主要介绍了Python中的列表和元组,包括它们的定义、特点、常见操作以及与列表的区别,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • python time时间库详解

    python time时间库详解

    Python中内置了一些与时间处理相关的库,如time、datatime和calendar库,这篇文章主要介绍了python-time时间库,需要的朋友可以参考下
    2022-08-08
  • python的自变量选择(所有子集回归,后退法,逐步回归)

    python的自变量选择(所有子集回归,后退法,逐步回归)

    这篇文章主要介绍了python的自变量选择(所有子集回归,后退法,逐步回归),文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
    2022-06-06
  • Python中Tkinter组件Menu的具体使用

    Python中Tkinter组件Menu的具体使用

    本文主要介绍了Python中Tkinter组件Menu的具体使用,Menu组件用于实现顶级菜单、下拉菜单和弹出菜单,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • python获取响应某个字段值的3种实现方法

    python获取响应某个字段值的3种实现方法

    这篇文章主要介绍了python获取响应某个字段值的3种实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python实现AHP算法的方法实例(层次分析法)

    python实现AHP算法的方法实例(层次分析法)

    这篇文章主要给大家介绍了关于python实现AHP算法(层次分析法)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Python使用中文正则表达式匹配指定中文字符串的方法示例

    Python使用中文正则表达式匹配指定中文字符串的方法示例

    这篇文章主要介绍了Python使用中文正则表达式匹配指定中文字符串的方法,结合实例形式分析了Python正则匹配及字符编码相关操作技巧,需要的朋友可以参考下
    2017-01-01
  • 基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)

    基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)

    Motor是一个异步mongodb driver,支持异步读写mongodb。它通常用在基于Tornado的异步web服务器中。这篇文章主要介绍了基于python3.7利用Motor来异步读写Mongodb提高效率,需要的朋友可以参考下
    2020-04-04
  • python解压缩文件或文件夹两种常见方式(附代码)

    python解压缩文件或文件夹两种常见方式(附代码)

    这篇文章主要介绍了python解压缩文件或文件夹两种常见方式,Python的zipfile和shutil模块提供了强大的文件和文件夹压缩与解压缩功能,zipfile模块适合精细控制,而shutil模块则快速简单,文中提供了详细的代码示例,需要的朋友可以参考下
    2025-04-04

最新评论