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同时兼容python2和python3的8个技巧分享
Jul 11 Python
python文件操作之目录遍历实例分析
May 20 Python
Python发送http请求解析返回json的实例
Mar 26 Python
Python中elasticsearch插入和更新数据的实现方法
Apr 01 Python
基于Python Numpy的数组array和矩阵matrix详解
Apr 04 Python
Python实现插入排序和选择排序的方法
May 12 Python
python openpyxl使用方法详解
Jul 18 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
Sep 03 Python
python如何获得list或numpy数组中最大元素对应的索引
Nov 16 Python
详解Python魔法方法之描述符类
May 26 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中一个有意思的日期逻辑处理
2012/03/25 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
php输出形式实例整理
2020/05/05 PHP
图片按比例缩放函数
2006/06/26 Javascript
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
opencv与numpy的图像基本操作
2019/03/08 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
销售实习自我鉴定
2013/12/07 职场文书
项目合作计划书
2014/01/09 职场文书
优秀团队获奖感言
2014/02/19 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
2014年工商所工作总结
2014/12/09 职场文书
党员倡议书
2015/01/19 职场文书
监守自盗观后感
2015/06/10 职场文书
学生会招新宣传语
2015/07/13 职场文书
分享几种python 变量合并方法
2022/03/20 Python